我在连接表以获取空值方面遇到了一些问题,我找不到我做错了什么。
案例:我正在尝试制作一个电影院系统,在这里我制作了与电影院匹配的实体。
我有一个大厅、一排和一张座位表,还有一张展示台,上面有电影的价值以及电影将在哪个大厅播放。为了把所有的东西结合在一起,我做了一个预订表,用来记录那个特定节目的座位。
我的实体是这样的:
我的问题是:我正在努力争取所有的免费座位,我可以争取所有的座位,但当我试图增加预订,以获得免费的我没有记录。
我的查询可以获取所有座位:
SELECT show.id AS ShowID,
seat.id AS SeatID,
seat.rowid AS RowID,
show.hallid AS HallId,
reservation.seatid AS Expr1
FROM show
INNER JOIN hall
ON show.hallid = hall.id
FULL OUTER JOIN seat
ON hall.id = seat.hallid
LEFT OUTER JOIN reservation
ON reservation.showid = show.id
WHERE ( show.id = 1 )
AND ( reservation.seatid IS NULL )
ORDER BY reservation.showid,
rowid
2条答案
按热度按时间swvgeqrz1#
你需要
INNER
连接Show
,Hall
,Row
以及Seat
和一个LEFT
加入Reservation
,以便筛选出匹配的行:dbf7pr2w2#
替换:
INNER JOIN Hall ON Show.Id = Hall.Id FULL OUTER JOIN
使用:INNER JOIN Hall ON Show.HallId = Hall.Id FULL OUTER JOIN
虽然这可能不是你问题的完整答案,但我认为这可能也会给你带来问题。