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
>=checkin
dan$check_in
<=checkout
, kamarnya DIPESAN - ATAU Jika
$check_out
>=checkin
dan$check_out
<=checkout
, kamarnya DIPESAN - ATAU Jika
$check_in
<=checkin
dan$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'))