0

我需要检查一段时间内(开始日期和结束日期)的可用酒店和可用房间数量。

我有一个表测试(id、日期、数量、hotel_id)。我需要在数量(例如数量> 2)和两个日期之间的日期(例如:测试表的日期字段的日期值应大于 '2013-05-06 ' 并且结束日期小于 '2013-05-10')。

我试过这个查询:

select hotel_id
  from test
 where qty>2
   and date between '2013-05-06' and '2013-05-10';

但是,另一个条件是给定日期之间必须有所有日期。即日期字段应包含所有日期日期值:'2013-05-06'、'2013-05-07'、'2013-05-08'、'2013-05-09'、'2013-05-10' . 如果缺少上述任何日期,则应返回空结果集。如果所有日期都可用 qty>2(let),那么它应该返回 hotel_ids 列表。

如何在单个 MySQL 查询中完成?

4

1 回答 1

0

尝试

SELECT `hotel_id`
  FROM test
 WHERE `date` BETWEEN '2013-05-06' AND '2013-05-10'
   AND `qty` >= 2
 GROUP BY `hotel_id`
 HAVING COUNT(*) = (DATEDIFF('2013-05-10', '2013-05-06') + 1)

SQLFiddle

于 2013-05-07T01:45:11.503 回答