我有一个可用性表 ind Mysql 如下:
id
room_id int(11)
avail_date date
对于每个房间,每个可用日期都有一行。可能存在间隙,例如房间 1 可能有 8 月 1、2、3、5、6、13、14、15 的条目,每隔一天它不可用。
我需要一个查询来查找 room_ids 的列表,其中在日期范围内的每一天都有可用的空间。
换句话说,获取 room_ids 列表,其中每个房间在 startdate 和 enddate 之间的每个日期都有一个条目。
You want something like this:
select room_id
from availability a
where avail_date between $start and $end
group by room_id
having count(*) = datediff($end, $start) + 1;
The having
clause is counting the number of rows during that period to see if it matches the number of days you need. This is "inclusive" logic, so if $start = $end
, then it assumes you need the room on that date.