我需要有关 SQL 查询的帮助
I need help on SQL Queries
我需要知道我的查询是否正确
这是数据库模式:
Hotel (hotelNo, hotelName, city)
Room (roomNo, hotelNo, type, price)
Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo)
Guest (guestNo, guestName, guestAddress)
列出酒店编号'H004' 10 月未入住的房间详情。
这是我写的:
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
table即可获得您想要的结果;如果您需要:使用标准连接!隐式连接(from
子句中的逗号是遗留语法,不应在新代码中使用)
MySQL 将日期文字理解为 YYYY-MM-DD
格式的字符串
我需要知道我的查询是否正确 这是数据库模式:
Hotel (hotelNo, hotelName, city)
Room (roomNo, hotelNo, type, price)
Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo)
Guest (guestNo, guestName, guestAddress)
列出酒店编号'H004' 10 月未入住的房间详情。 这是我写的:
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
table即可获得您想要的结果;如果您需要:使用标准连接!隐式连接(from
子句中的逗号是遗留语法,不应在新代码中使用)MySQL 将日期文字理解为
格式的字符串YYYY-MM-DD