我有一个与 sql 相关的问题。我需要为下面描述的表编写一个复杂的查询
id date quantity roomtypeid hotelid
用户将使用入住和退房日期搜索酒店,并通过搜索查询指定房间数量(数量),所以我需要做的是从上表中获取酒店 ID,其中包含入住时可用的最小房间数量查看日期。
1 04-01-2013 3 4 10
2 04-02-2013 3 4 10
3 04-03-2013 3 4 10
4 04-04-2013 3 4 10
5 04-01-2013 3 4 11
6 04-02-2013 3 4 11
7 04-03-2013 3 4 11
8 04-04-2013 3 4 11
9 04-01-2013 3 4 12
10 04-02-2013 3 4 12
如果用户想要在 2013 年 1 月 4 日至 2013 年 3 月 4 日期间预订 3 间客房,则生成的查询应仅提供 10,11 作为酒店 ID。
问候 苏巴什
最佳答案
更新2
SELECT `hotelid`
FROM table1
WHERE `date` BETWEEN '2013-04-01' AND '2013-04-03'
AND quantity >=3
GROUP BY `hotelid`
HAVING COUNT(*) = DATEDIFF('2013-04-03', '2013-04-01') + 1
WHERE
子句中的 3 表示应该可用的房间数。
输出
| HOTELID |
-----------
| 10 |
| 11 |
<强> SQLFiddle
关于php - 检索预订系统用户的唯一酒店 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16393321/