MySQL:酒店预订服务的复杂查询

时间:2018-03-30 16:56:23

标签: php mysql sql

这是我的数据:

table:rooms_available

    ID  date        user  room_id 
   ------------------------------
    1   2018-04-02  1     10
    2   2018-04-03  1     10
    3   2018-04-04  1     10

    4   2018-04-02  1     20
    5   2018-04-03  1     20
    6   2018-04-04  1     20

    7   2018-04-02  2     11
    8   2018-04-04  2     11

    9   2018-04-01  3     12
   10   2018-04-02  3     12
   11   2018-04-03  3     12
   12   2018-04-04  3     12
   13   2018-04-05  3     12
我试图编写一个搜索功能来搜索可用的房间。 例如,从2018-04-02到2018-04-04进行搜索时,所需的输出为:

用户级别:(用于构建主结果记录集)

user  rooms_available
---------------------
1     2
3     1

房间等级(每位用户):

user  room_id
-------------
1     10
1     20
3     12

我的查询遇到了一些问题:

select * from rooms_available where date between '2018-04-02' AND '2018-04-04'

还会返回用户2的记录,因为日期范围缺失2018-04-03。 同如:

select * from rooms_available where (date='2018-04-02' OR date='2018-04-03' OR date='2018-04-04')

所以查询需要考虑完整日期范围的天数/记录数量,这将是3.我尝试了类似的事情 count(*)HAVING,但它没有按预期工作。

任何想法如何解决? 感谢

1 个答案:

答案 0 :(得分:2)

我认为你希望每个用户的房间都是这样的:

keyup

要获得第一个结果,只需将其用作子查询并再次聚合。