Đây là nguyên mẫu cho những gì bạn muốn làm:
SELECT * FROM table1 t1
WHERE NOT EXISTS (SELECT 1 FROM table2 t2 WHERE t1.id = t2.id)
Đây, id
được giả định là PK và FK trong cả hai bảng. Bạn nên điều chỉnh cho phù hợp. Cũng lưu ý rằng điều quan trọng là phải so sánh PK và FK trong trường hợp này.
Vì vậy, đây là cách truy vấn của bạn sẽ trông như thế nào:
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')
)
Nếu bạn muốn, bạn kiểm tra các phần của truy vấn của mình bằng cách thực thi chúng trong ứng dụng khách mysql. Ví dụ:bạn có thể đảm bảo liệu phần sau có trả về bất kỳ bản ghi nào hay không:
SELECT * FROM room_events
WHERE room_start BETWEEN '1294727400' AND '1294729200'
OR
room_finish BETWEEN '1294727400' AND '1294729200'
Nếu không, bạn đã tìm ra thủ phạm và hành động tương ứng với các bộ phận khác :)