这是我的数据:
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
,但它没有按预期工作。
任何想法如何解决? 感谢
答案 0 :(得分:2)
我认为你希望每个用户的房间都是这样的:
keyup
要获得第一个结果,只需将其用作子查询并再次聚合。