これがあなたがやりたいことのプロトタイプです:
SELECT * FROM table1 t1
WHERE NOT EXISTS (SELECT 1 FROM table2 t2 WHERE t1.id = t2.id)
ここでは、id
両方のテーブルでPKとFKであると想定されています。それに応じて調整する必要があります。この場合、PKとFKを比較することが重要であることに注意してください。
したがって、クエリは次のようになります。
SELECT id, room_name FROM rooms r
WHERE NOT EXISTS
(SELECT * FROM room_events re
WHERE
r.room_id = re.room_id
AND
(
room_start BETWEEN '1294727400' AND '1294729200'
OR
room_finish BETWEEN '1294727400' AND '1294729200')
)
必要に応じて、mysqlクライアントで実行してクエリの一部を確認します。たとえば、以下がレコードを返すかどうかを確認できます。
SELECT * FROM room_events
WHERE room_start BETWEEN '1294727400' AND '1294729200'
OR
room_finish BETWEEN '1294727400' AND '1294729200'
そうでない場合は、原因を見つけて、他の部分に応じて行動します:)