2017-03-16 53 views
0

這是我的表格。我如何從SQl查詢中的特定時間段內挑選預訂

post_id  meta_key  meta_value 
-------- --------  ---------- 
10   booking_from 2017-01-20 
10   booking_to  2017-01-25 
11   booking_from 2017-02-20 
11   booking_to  2017-02-25 

我怎麼能在2017年1月22日,如果到2017年1月26日已預訂的POST_ID。目前我在這個日期預訂。

我要挑給定的日期期間有一個預訂使用SQL查詢

+0

你能分享你期望的結果嗎? – Naincy

回答

1

一種方法是由post_id你的表彙總了和檢查,以確保booking_from日期上或'2017-01-22'booking_to前日期在'2017-01-26'之後或之後。這裏的一個竅門是使用MIN()MAX()來確定預訂日期。

SELECT post_id 
FROM yourTable 
GROUP BY post_id 
HAVING MIN(meta_value) <= '2017-01-22' AND 
     MAX(meta_value) >= '2017-01-26' 

這將檢查整個範圍完全由預訂所覆蓋。相反,如果你想查詢的任何現有預訂是否在所有與該範圍重疊,我們可以查詢稍微更改爲以下:

SELECT post_id 
FROM yourTable 
GROUP BY post_id 
HAVING MIN(meta_value) BETWEEN '2017-01-22' AND '2017-01-26' OR 
     MAX(meta_value) BETWEEN '2017-01-22' AND '2017-01-26' 

這裏是第二查詢演示

Rextester

相關問題