我有一个与sql相关的问题。我需要为下面描述的表写一个复杂的查询
id date quantity roomtypeid hotelid
用户将使用入住和退房日期搜索酒店,并通过搜索查询指定房间数量(数量(,所以我需要做的是从上表中获取酒店ID,该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年4月1日至2013年4日预订3间客房,则查询结果应仅给出10,11作为酒店id。
问候Subash
更新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
SELECT DISTINCT(`hotelid`) FROM `tableName` WHERE `date` = $checkindate AND `date` = $checkoutdate AND `quantity` = $numberofroom
使用上面的查询。这只是一个伪查询,根据您(字段名称和变量名称(修改