小编典典

mysql酒店客房空房情况

sql

我有如下所示的ind Mysql可用性表:

id
room_id int(11)
avail_date date

每个房间的每个可用日期都有一行。可能存在间隙,例如,房间1可能有8月1,2,3,5,6,13,14,15的条目,隔天不可用。

我需要查询以找到room_ids列表,其中在日期范围内每天都有可用的空间。

换句话说,获取room_id列表,其中在开始日期和结束日期之间的每个日期都有每个房间的条目。


阅读 256

收藏
2021-04-14

共1个答案

小编典典

您想要这样的东西:

select room_id
from availability a
where avail_date between $start and $end
group by room_id
having count(*) = datediff($end, $start) + 1;

having子句将计算该时间段内的行数,以查看其是否与您需要的天数匹配。这是“包容性”逻辑,因此,如果$start = $end,则假定您需要该日期的房间。

2021-04-14