0

我有一个与 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

如果用户想要从 04-01-2013 到 04-03-2013 预订 3 个房间,则生成的查询应该只给出 10,11 作为酒店 ID。

问候苏巴什

4

2 回答 2

1

更新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

子句中的3WHERE是应该可用的房间数量。

输出

| HOTELID |
-----------
|      10 |
|      11 |

SQLFiddle

于 2013-05-06T07:06:42.007 回答
0
SELECT DISTINCT(`hotelid`) FROM `tableName` WHERE `date` = $checkindate AND `date` = $checkoutdate AND `quantity` = $numberofroom

使用上面的查询。它只是虚拟查询根据您修改它(字段名称和变量名称)

于 2013-05-06T07:02:45.447 回答