2016-12-02 87 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

美麗。有效。非常感謝! –