Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Trình đơn thả xuống với truy vấn liên hợp

Tôi phải thừa nhận rằng thật khó khăn khi cố gắng gỡ rối truy vấn đó để hiểu logic đằng sau nó nhưng tôi nghĩ rằng truy vấn sau sẽ trả về kết quả mà bạn cần.

{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;

Tôi khá chắc chắn rằng điều này là tương đương về mặt logic và một khi được thể hiện dưới dạng đơn giản như thế này, bạn sẽ dễ dàng hiểu được cách bạn có thể lấy nó để trả lại khoảng thời gian bổ sung.

Bạn nên có một truy vấn riêng để sử dụng khi điền các khoảng thời gian cho một đặt chỗ mới không có một khoảng thời gian hiện tại, trong trường hợp đó, bạn chỉ có thể xóa một dòng duy nhất 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. Datetime trong PHP Script

  2. Hàm PHP để thoát khỏi cú pháp regexp của MySQL

  3. Làm thế nào để kết nối R với MySQL? Không kết nối được với cơ sở dữ liệu:Lỗi:Không thể tải plugin caching_sha2_password

  4. Làm cách nào để bạn nối một ký tự xuống dòng với một giá trị trong MySQL?

  5. Làm thế nào để có được độ sâu trong đệ quy thủ tục cửa hàng mysql?