我知道这很简单,但奇怪的是我的搜索没有显示任何令人满意的答案。
假设我有“酒店”、“客人”和“预订”表。
酒店包含(酒店#,城市)
guest 包含(guest#,guest_name)
预订包含(酒店#、客人#、预订日期)
如果我要查找预订过伦敦每家酒店的所有客人,我应该如何编写查询?
到目前为止,我已经尝试创建包含位于伦敦的所有酒店的 View ,并尝试了“全部”查询,但似乎没有人给我答案......任何帮助将不胜感激。
-----这是我的实际表格
Hotel
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| hotel# | int(11) | NO | PRI | 0 | |
| hotel_name | varchar(20) | YES | | NULL | |
| city | varchar(10) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
Guest
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| guest# | int(11) | NO | PRI | 0 | |
| guest_name | varchar(15) | YES | | NULL | |
| age | tinyint(4) | YES | | NULL | |
| guest_city | varchar(10) | YES | | NULL | |
+------------+-------------+------+-----+---------+-------+
Booking
+-----------+-------------+------+-----+------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+------------+-------+
| hotel# | int(11) | NO | PRI | 0 | |
| guest# | int(11) | NO | PRI | 0 | |
| date_from | date | NO | PRI | 0000-00-00 | |
| date_to | date | YES | | NULL | |
| room# | smallint(6) | YES | | NULL | |
+-----------+-------------+------+-----+------------+-------+
Room
+--------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| room# | int(11) | NO | PRI | 0 | |
| hotel# | int(11) | NO | PRI | 0 | |
| type | varchar(15) | YES | | NULL | |
| price | int(11) | YES | | NULL | |
+--------+-------------+------+-----+---------+-------+
最佳答案
您可以尝试使用不存在的方法,如下所示:
select a.guest#,a.guest_name
from guest a
where not exists (select b.hotel#
from hotel b
where b.city='London' and not exists
(select *
from booking c
where c.guest#=a.guest# and c.hotel#=b.hotel#))
关于Mysql - 到底在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49780899/