我正在開發一個項目,我必須在特定時刻查找每個區域都是免費的,但我對於如何做到這一點感到困惑。MySQL返回連接表的項目
我有2張桌子。 區域和保留。
地區有: ID, 名
預約: ID, AREA_ID, 起始日期, END_DATE
我想回到什麼是沒有預訂上的所有地區一個特定的日期。任何想法如何做到這一點?
我正在開發一個項目,我必須在特定時刻查找每個區域都是免費的,但我對於如何做到這一點感到困惑。MySQL返回連接表的項目
我有2張桌子。 區域和保留。
地區有: ID, 名
預約: ID, AREA_ID, 起始日期, END_DATE
我想回到什麼是沒有預訂上的所有地區一個特定的日期。任何想法如何做到這一點?
查詢:
$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
。
這不是工作。當沒有任何保留時,它不會返回任何東西,而是假設要返回所有內容。當只有一個區域進行預約時,它會將相同的start_date添加到所有其他區域。 –
沒有得到你想要做的事情。 –
如果您添加預期結果的虛擬數據將會很有幫助 –
嘗試使用此查詢:
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
你想在'start_date'和'end_date'檢查日期? –
你有任何代碼嗎? – Henrik