Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Memeriksa konflik rentang tanggal di MySQL

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'))


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Docker php_network_getaddresses error

  2. Cara membuat tabel berdasarkan Kumpulan Hasil JDBC

  3. Skema Basis Data Wufoo - Bagaimana Anda mendesainnya?

  4. Objek tidak dapat dikonversi menjadi string di MySQLi PHP

  5. terhubung ke database mysql menggunakan perpustakaan phpseclib