2016-02-02 107 views
0

我正在開發一個項目,我必須在特定時刻查找每個區域都是免費的,但我對於如何做到這一點感到困惑。MySQL返回連接表的項目

我有2張桌子。 區域保留

地區有: ID, 名

預約: ID, AREA_ID, 起始日期, END_DATE

我想回到什麼是沒有預訂上的所有地區一個特定的日期。任何想法如何做到這一點?

+0

你想在'start_date'和'end_date'檢查日期? –

+0

你有任何代碼嗎? – Henrik

回答

0

查詢:

$date = '2016-2-2'; 
SELECT a.name 
FROM area AS a, 
    reservation AS r 
WHERE (r.start_date <> '$date' OR r.end_date <> '$date') 

假設你的日期格式是在數據庫Y-m-d

+0

這不是工作。當沒有任何保留時,它不會返回任何東西,而是假設要返回所有內容。當只有一個區域進行預約時,它會將相同的start_date添加到所有其他區域。 –

+0

沒有得到你想要做的事情。 –

+0

如果您添加預期結果的虛擬數據將會很有幫助 –

0

嘗試使用此查詢:

SELECT a.name 
FROM area AS a 
LEFT JOIN reservation AS r ON r.area_id = a.id 
AND :myDate between r.start_date AND r.end_date 
WHERE r.id IS NULL