2013-04-16 38 views
1

我有2個表使用以下查詢從中獲取記錄。在MySQL查詢條件下使用選定的字段值

SELECT es.name,es.location,e.num_days as days 
FROM event_schedule es,events e 
WHERE es.owner_id=1 AND es.event_id=e.id AND (es.date_of_service BETWEEN CURDATE() AND CURDATE() + INTERVAL 4 DAY)" 

在給定的查詢中,我獲取所有未來4天的計劃事件。查詢工作正常。我的問題是'INTERVAL 4 DAY'這個值應該來自表'事件'本身。這意味着來自相同查詢的字段的值(e.num_days爲天)。

任何想法我怎麼能做到這一點?

+0

你是否試過子查詢? – Borniet

+0

直接在查詢中使用它有什麼問題? 'INTERVAL num_days DAY',例如http://www.sqlfiddle.com/#!2/b9865/2 –

回答

1

首先,學習正確的聯接語法值。

您可以使用變量代替4。所以試試這個:

SELECT es.name,es.location,e.num_days as days 
FROM event_schedule es join 
    events e 
    on es.owner_id=1 AND es.event_id=e.id AND 
     (es.date_of_service BETWEEN CURDATE() AND CURDATE() + INTERVAL e.num_days DAY) 
+0

感謝它爲我工作。但是爲什麼當我使用天而不是es.num_days時它不起作用。 – Mahendra

+1

@Mhehendra。 ..因爲'days'是'select'子句中提供的別名。在設置這些別名之前,先評估'from'子句。您只能在'group by','having'和'order by'子句中使用選擇的別名。 –

0

假設$ VAL包含要

SELECT es.name,es.location,e.num_days as days FROM event_schedule es,events e WHERE es.owner_id=1 AND es.event_id=e.id AND (es.date_of_service BETWEEN CURDATE() AND CURDATE() + INTERVAL $val DAY)" 
+0

不,這不是我要求的。我想es.num_days用戶insted的靜態值4,並在同一個查詢。沒有PHP值可以使用。 – Mahendra

相關問題