Вот прототип того, что вы хотите сделать:
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'
Если этого не произойдет, вы нашли виновного и будете действовать соответственно с другими частями:)