Hier ist der Prototyp für das, was Sie tun möchten:
SELECT * FROM table1 t1
WHERE NOT EXISTS (SELECT 1 FROM table2 t2 WHERE t1.id = t2.id)
Hier id
wird in beiden Tabellen als PK und FK angenommen. Sie sollten sich entsprechend anpassen. Beachten Sie auch, dass es in diesem Fall wichtig ist, PK und FK zu vergleichen.
So sollte Ihre Abfrage aussehen:
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')
)
Wenn Sie möchten, überprüfen Sie die Teile Ihrer Abfrage, indem Sie sie im mysql-Client ausführen. Beispielsweise können Sie sicherstellen, ob Folgendes Datensätze zurückgibt oder nicht:
SELECT * FROM room_events
WHERE room_start BETWEEN '1294727400' AND '1294729200'
OR
room_finish BETWEEN '1294727400' AND '1294729200'
Wenn nicht, haben Sie den Übeltäter gefunden und handeln entsprechend mit anderen Teilen :)