Ето прототипа за това, което искате да направите:
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'
Ако не стане, вие сте намерили виновника и действате съответно с други части :)