mysql - 我需要有关 SQL 查询的帮助
问题描述
我需要知道我的查询是否正确这是数据库架构:
Hotel (hotelNo, hotelName, city)
Room (roomNo, hotelNo, type, price)
Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo)
Guest (guestNo, guestName, guestAddress)
列出 10 月份酒店编号为“H004”的未入住客房详情。这是我写的:
SELECT*
FROM Room r,Hotel h
WHERE r.hotelNo=h.hotelNo AND hotelNo='H004'
AND roomNo NOT IN
(SELECT roomNo
FROM Booking b,Hotel h
WHERE dateFrom='1-Oct'
AND dateTo='31-Oct'
AND b.hotelNo=h.hotelNo
AND hotelNo='H004');
解决方案
我会这样说not exists
:
select r.*
from rooms r
where r.hotelno = 'H004' and not exists (
select 1
from booking b
where
b.hotelno = r.hotelno
and b.roomno = r.roomno
and b.datefrom < '2020-11-01'
and b.dateto >= '2020-10-01'
)
其内容为:查找指定酒店中与 2020 年 10 月重叠的所有客房。
笔记:
你不需要带
hotel
桌子就可以得到你想要的结果;如果您需要:使用标准连接!隐式连接(from
子句中的逗号是遗留语法,不应在新代码中使用)MySQL 将日期文字理解为格式中的字符串
YYYY-MM-DD
推荐阅读
- django - django admin 导出为 pdf
- java - Scanner.read() 不拾取分隔符的间歇性错误
- c# - 我对统一的 fov 可视化脚本有疑问
- python - paho-mqtt python包中的连接被拒绝错误
- ruby - Ruby:通过 TCP 套接字发送字符串
- php - 在信用卡支付中使用 Stripe
- swift - 为什么我不能执行鼠标左键单击?
- objective-c - 将(Swift WatchKit)目标添加到(Objective-C iOS)应用程序
- php - Laravel:用户登录后抛出 MethodNotAllowedHttpException
- python - 需要将pandas相关高亮表(cmap Matplotlib)保存为png图片