2012-02-21 55 views
0

請求表中存在所有請求記錄。然後可以對它們進行過濾,因爲其中一些屬於額外的表格,可以是預訂或拒絕。房間和vwRoomRequest不會影響此查詢。 我試圖返回已被拒絕的記錄,因此它們存在於請求表和拒絕表中,並且這兩個表的主鍵將是相同的。使用PHP和MYSQL數據庫查找不在另一個表中的結果?

在真正的查詢中,我使用的是Request.RequestID組,因爲當Request表中實際上只有17行時,此查詢返回2488個結果!

的主要問題(上述以外的),是該查詢將返回相同的結果,如果這條線的查詢均未出現: AND Request.RequestID <> BookingID AND Request.RequestID <>被拒.RequestID。

SELECT * 
FROM Request , Rooms, Booking, Declined, vwRoomRequest 
WHERE Request.RoomID = Rooms.RoomID 
AND Rooms.RoomID = vwRoomRequest.RoomID 
AND Request.RequestID<>BookingID 
AND Request.RequestID<>Declined.RequestID 

任何想法?

回答

1

如果您試圖返回所有已拒絕的請求,那麼爲什麼不只是將Declined表中的所有行和LEFT JOIN中的所有行都返回到您需要的任何其他表中?類似這樣的:

SELECT * FROM Declined 
LEFT JOIN Request ON Declined.RequestID = Request.RequestID 
LEFT JOIN Rooms ON Request.RoomID = Rooms.RoomID 
LEFT JOIN vmRoomRequest ON Rooms.RoomID = vmRoomRequest.RoomID 
相關問題