2016-12-02 88 views
0

在表中“预定”我认为客户的预订信息(日期/时间/ 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.]

+0

为什么坐的座位会有空RowNumber?你的意思是你想找到**没有**的座位? – Barmar

+0

@Barmar这就是我想要的(不采取席位显示) - 空ROWNUMBER将在预定指示座位不采取(或者说是想法),因为它尚未预订。 –

回答

2

您需要使用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

美丽。有效。非常感谢! –