次のような SQL クエリにレイヤーを追加しようとしています。
SELECT
COUNT(*) totalCount
FROM
ts_room
WHERE
NOT EXISTS (
SELECT 1
FROM ts_roompref
JOIN ts_request
ON ts_roompref.request_id = ts_request.id
AND day_id = 1
AND period_id = 1
WHERE
ts_room.id = ts_roompref.room_id)
私がやりたいことは、一致する request.id の行が ts_allocation というテーブルに存在しないことを確認することです。これは私がこれまでに試みたものですが、うまくいかないようです:
SELECT
COUNT(*) totalCount
FROM
ts_room
WHERE
NOT EXISTS (
SELECT 1
FROM ts_roompref
JOIN ts_request
ON ts_roompref.request_id = ts_request.id
AND day_id = 1
AND period_id = 1
WHERE
ts_room.id = ts_roompref.room_id)
AND NOT EXISTS (
SELECT 1
FROM ts_roompref
JOIN ts_allocation
ON ts_roompref.request_id = ts_allocation.request_id
AND ts_allocation.status = "Allocated"
WHERE
ts_room.id = ts_roompref.room_id)
)
何か案は?SQL Fiddle をここに含めました: http://sqlfiddle.com/#!2/4540d/2