Voici le prototype de ce que vous voulez faire :
SELECT * FROM table1 t1
WHERE NOT EXISTS (SELECT 1 FROM table2 t2 WHERE t1.id = t2.id)
Ici, id
est supposé être le PK et le FK dans les deux tableaux. Vous devez vous ajuster en conséquence. Notez également qu'il est important de comparer PK et FK dans ce cas.
Alors, voici à quoi votre requête devrait ressembler :
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')
)
Si vous le souhaitez, vous vérifiez les parties de votre requête en les exécutant dans le client mysql. Par exemple, vous pouvez vous assurer que les éléments suivants renvoient ou non des enregistrements :
SELECT * FROM room_events
WHERE room_start BETWEEN '1294727400' AND '1294729200'
OR
room_finish BETWEEN '1294727400' AND '1294729200'
Si ce n'est pas le cas, vous avez trouvé le coupable et agissez en conséquence avec les autres parties :)