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

Dropdown dengan kueri gabungan

Saya harus mengakui bahwa sulit untuk mencoba menguraikan kueri itu untuk memahami logika di baliknya, tetapi saya pikir kueri berikut harus mengembalikan hasil yang Anda butuhkan.

{thistable}.id IN (
    /*Finds booking slots where the booking slot does not overlap
      with any of the existing bookings on that day, 
      or where the booking slot id is the same as the current slot.*/
    SELECT t.id + 3
    FROM fab_booking_slots AS t 
    WHERE t.id = '{fab_booking___book_starttime}'
    OR NOT EXISTS (
        Select 1 
        From  fab_booking_taken AS p1
        Where Date(p1.book_date) = Date('{fab_booking___book_bookingdate}')
        And p1.book_end > t.heuredepart_resa 
        And p1.book_start < t.heurearrivee_resa
    )
)
Order By id Asc;

Saya cukup yakin bahwa ini setara secara logis, dan setelah dinyatakan dalam bentuk yang disederhanakan seperti ini, lebih mudah untuk melihat bagaimana Anda bisa membuatnya juga mengembalikan slot waktu tambahan.

Anda harus memiliki kueri terpisah untuk digunakan saat mengisi slot waktu untuk pemesanan baru yang tidak memiliki slot waktu yang ada, dalam hal ini Anda dapat menghapus satu baris t.id = '{fab_booking___book_starttime}' OR .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Baca array JSON di MYSQL

  2. MySQL Query untuk menerima kombinasi acak dari dua tabel

  3. Pertanyaan desain database

  4. Format tanggal di MySQL SELECT sebagai ISO 8601

  5. MySQL:Masukkan jika ip ini tidak memiliki catatan