Mysql - 到底在哪里?

标签 mysql

我知道这很简单,但奇怪的是我的搜索没有显示任何令人满意的答案。

假设我有“酒店”、“客人”和“预订”表。

酒店包含(酒店#,城市)

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/

相关文章:

php - 使用函数参数在表中插入数据

php - MySQL SELECT 子查询多对多关系

Mysql正则表达式匹配字符串开头或结尾的括号字符

c# - 尽管有适当的 NuGet 包,为什么我仍然需要在计算机上安装 MySQL 连接器?

mysql - 留言讨论查询

javascript - 删除sequelize中的单引号原始查询

mysql - 查询以从 session 表中获取高峰时间

php - 如何将codeigniter中的产品表中的特色数据保存到特色表中

php - MySQL返回错误记录

python - django ORM可以处理有条件的mysql语句吗