Masalah yang Anda alami adalah kueri Anda tidak cukup kuat. Saat Anda memecahkan masalah, yang Anda miliki adalah ini:
Jika rentang ditentukan oleh $check_in dan $check_out tumpang tindih dengan rentang yang ditentukan oleh checkin dan checkout di apa saja jalan, maka kamar dipesan. Jika tidak, gratis.
Artinya:
- Jika
$check_in>=checkindan$check_in<=checkout, kamarnya DIPESAN - ATAU Jika
$check_out>=checkindan$check_out<=checkout, kamarnya DIPESAN - ATAU Jika
$check_in<=checkindan$check_out>=checkout, kamarnya DIPESAN
Jadi, Anda perlu merepresentasikan kedua skenario ini dalam subkueri Anda untuk mendapatkan informasi yang Anda cari.
Juga, Anda diharapkan akan menggunakan datetime untuk perbandingan Anda dan bukan hanya time , jika tidak, Anda akan mengalami efek samping.
EDIT:Kueri SQL
(Ingatlah bahwa ada lebih dari satu cara untuk menguliti kucing. Saya hanya memberikan contoh yang sesuai dengan apa yang sudah Anda miliki sebanyak mungkin. Sekali lagi, saya juga berasumsi bahwa checkin , checkout , $check_in , dan $check_out semua akan memutuskan ke datetime jenis)
SELECT *
FROM room
WHERE room_id NOT IN
(SELECT room_id
FROM bookings
WHERE
(checkin <= '$check_in' AND checkout >= '$check_in') OR
(checkin <= '$check_out' AND checkout >= '$check_out') OR
(checkin >= '$check_in' AND checkout <= '$check_out'))