我正在模拟电影院票务预订系统,并想知道如何显示尚未为电影的特定放映而预定的座位
我如何加入这些表以显示尚未为指定放映预定的座位?
我有下表
您可以通过LEFT JOIN
将观众席的座位列表进行给定筛选,以得到保留座位列表;未预留的席位将不匹配并且Seat_Reserved.ID
为NULL
:
SELECT *
FROM Screening C
JOIN Seat S ON S.Auditorium_ID = C.Auditorium_ID
LEFT JOIN Seat_Reserved R ON R.Screening_ID = C.Screening_ID AND R.Seat_ID = S.Seat_ID
WHERE C.Screening_ID = ?
AND R.ID IS NULL
您还可以使用NOT EXISTS
子句获得相同的结果:
SELECT *
FROM Screening C
JOIN Seat S ON S.Auditorium_ID = C.Auditorium_ID
WHERE C.Screening_ID = ?
AND NOT EXISTS (SELECT *
FROM Seat_Reserved R
WHERE R.Screening_ID = C.Screening_ID
AND R.Seat_ID = S.Seat_ID)
查询中的?
是您感兴趣的筛选的占位符。