[英]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.