我正在用一些sql查询和它背后的逻辑来敲我的头。
假设我们有这些表:
餐桌酒店
+----+---------+
| id | name |
+----+---------+
| 1 | Hotel A |
+----+---------+
餐桌酒店客房
+----+----------+-----------+
| id | hotel_id | room_type |
+----+----------+-----------+
| 1 | 1 | dbl | <- can be used as A,B,C,D,E,F
| 2 | 1 | dbl | <- can be used as B,C,D,E,F
| 3 | 1 | sng | <- can be used as A
| 4 | 1 | trp | <- can be used as D,E,F
+----+----------+-----------+
餐桌酒店房间用途
+----+---------+-------+
| id | room_id | usage |
+----+---------+-------+
| 1 | 1 | B |
| 2 | 1 | C |
| 3 | 1 | A |
| 4 | 1 | D |
| 5 | 1 | E |
| 6 | 1 | F |
| 7 | 2 | B |
| 8 | 2 | C |
| 9 | 2 | D |
| 10 | 2 | E |
| 11 | 2 | F |
| 12 | 3 | A |
| 13 | 4 | D |
| 14 | 4 | E |
| 15 | 4 | F |
+----+---------+-------+
如果我在单独的查询中搜索使用率为a的2个房间或使用率为d的3个房间,结果应该是带有相应房间ID的hotel a。
问题是,如果我同时搜索2个使用a的房间和3个使用d的房间,它也会返回酒店a,因为它不计算某些房间可以用作a和d。
房间应该是独一无二的/总共5个/。当前示例不应返回结果,因为酒店中总共有4个房间。
2条答案
按热度按时间c8ib6hqw1#
这有用吗?
--两个房间,使用
--三个房间,d
--有两个房间的房间数
332nm8kg2#
在db上测试<fiddle here