2012-02-21 9 views
0

すべての要求レコードは、Requestテーブル内に存在します。追加または削除されたテーブルは、予約済みまたは拒否済みのテーブルに属しているため、フィルタリングできます。 roomsとvwRoomRequestはこのクエリには影響しません。 私は「拒否されました」というレコードを返そうとしているため、リクエストテーブルと拒否テーブルの両方に存在し、これらの2つのテーブルの主キーは同じになります。PHPとMYSQLデータベースを使用して、別のテーブルにない結果を検索しますか?

実際のクエリでは、Request.RequestIDによるグループを使用しています。このクエリは、実際にはリクエストテーブルに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 
関連する問題