这个mySQL逻辑有什么问题?
问题描述:
在表中“预定”我认为客户的预订信息(日期/时间/ ROWNUMBER)。 在表“座位”我认为在影院所有座椅(ROWNUMBER和区)的细节。这个mySQL逻辑有什么问题?
此查询的目的是加入到座位预订,看看哪些座位是采取以显示这些座位行已在相应的预订ROWNUMBER空项。下面是代码:
SELECT s.Zone, s.RowNumber
FROM Booking b JOIN Seat s
ON s.RowNumber = b.RowNumber
WHERE b.PerfDate = '2016-12-12'
AND b.PerfTime = '20:30:00'
AND b.RowNumber is null;
代码被接受,但结果回来为空集与最后的,声明或只是表明什么是在没有它的预订。我正在使用的逻辑显然有些问题,但我无法确定它,因为当我阅读它时,我正在尝试做的事情是有道理的。可能是一个明显的错误,但一些帮助将不胜感激。
预先感谢您。
[编辑 - 我已经发现了逻辑错误......这是事实,我要求的特定日期和时间时,我想没有那些定义的记录,但不知道如何避开它,似乎赶上22.]
答
您需要使用LEFT JOIN
,并将不匹配行的所有条件放入ON
子句。
SELECT s.zone, s.RowNumber
FROM Seat AS s
LEFT JOIN Booking AS b
ON s.RowNumber = b.RowNumber AND b.PerfDate = '2016-12-12' AND b.PerfTime = '20:30:00'
WHERE b.RowNumber IS NULL
+0
美丽。有效。非常感谢! –
为什么坐的座位会有空RowNumber?你的意思是你想找到**没有**的座位? – Barmar
@Barmar这就是我想要的(不采取席位显示) - 空ROWNUMBER将在预定指示座位不采取(或者说是想法),因为它尚未预订。 –