我有一个与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年4月1日至2013年4月4日预订3间客房,则结果查询应仅提供10,11作为酒店ID。
此致 Subash
答案 0 :(得分:1)
<强> UPDATE2 强>
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 强>
答案 1 :(得分:0)
SELECT DISTINCT(`hotelid`) FROM `tableName` WHERE `date` = $checkindate AND `date` = $checkoutdate AND `quantity` = $numberofroom
使用以上查询。它只是虚拟查询根据你(字段名称和变量名称)修改它