[英]hotel booking check empty room between arrival date and departure date?
基本上,我從房間表中檢索所有帶有到達和離開日期的可用房間。
SQL查詢
SELECT * FROM `roomcalendar` where day BETWEEN '2016-08-25' and '2016-08-31'
結果是
id day roomname avaroom
1 2016-08-25 RoomA 0
2 2016-08-26 RoomA 2
3 2016-08-27 RoomA 0
4 2016-08-28 RoomA 1
5 2016-08-29 RoomA 1
6 2016-08-30 RoomA 0
7 2016-08-31 RoomA 1
如果 avaroom 不等於到達日期和離開日期之間的 0,我只想要可用房間
我想要結果
SQL查詢
SELECT * FROM `roomcalendar` where day BETWEEN '2016-08-25' and '2016-08-31'
結果必須是空的
SQL查詢
SELECT * FROM `roomcalendar` where day BETWEEN '2016-08-25' and '2016-08-26'
結果必須是空的
SQL查詢
SELECT * FROM `roomcalendar` where day BETWEEN '2016-08-26' and '2016-08-27'
它顯示一個結果
SQL查詢
SELECT * FROM `roomcalendar` where day BETWEEN '2016-08-26' and '2016-08-28'
結果必須是空的
SQL查詢
SELECT * FROM `roomcalendar` where day BETWEEN '2016-08-28' and '2016-08-30'
它顯示兩個結果
謝謝。
如果 avaroom 不等於到達日期和離開日期之間的 0,我只想要可用房間
所以如果你重新表述這個:
avaroom
= 0 的行,則您想要房間。用 SQL 翻譯:
select * from roomcalendar
where day between '2016-08-25' and '2016-08-31'
and not exists (
select * from roomcalendar
where day between '2016-08-25' and '2016-08-31'
and avaroom = 0
);
你也可以這樣說:
用 SQL 翻譯:
select * from roomcalendar
where day between '2016-08-25' and '2016-08-31'
and avaroom != 0
having count(*) = datediff('2016-08-31','2016-08-25') + 1
您可能需要稍微調整查詢,但這應該為您指明正確的方向。
像這樣修改查詢。
SELECT * FROM `bookings` WHERE `room_id` = '1'
AND booking_end >= '2020-12-01 13:20:00' AND booking_start <= '2020-12-10 13:20:00'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.