Mysql
 sql >> база данни >  >> RDS >> Mysql

Падащо меню със заявка за съюз

Трябва да призная, че е обезсърчително да се опитате да разплетете тази заявка, за да разберете логиката зад нея, но мисля, че следната заявка трябва да върне резултатите, от които се нуждаете.

{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.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. известие за ново съобщение на живо

  2. има ли mysql функция за декодиране на html обекти?

  3. mysql_upgrade неуспешно - innodb таблици не съществуват?

  4. ASCII() Примери – MySQL

  5. Как да намерите несъществуващи данни от друга таблица чрез JOIN?