0

我有一个可用性表 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 之间的每个日期都有一个条目。

4

1 回答 1

2

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.

于 2013-09-03T11:33:19.767 回答