sql >> Database teknologi >  >> RDS >> Mysql

Dropdown med fagforeningsforespørgsel

Jeg må indrømme, at det er skræmmende at forsøge at løse den forespørgsel for at forstå logikken bag den, men jeg tror, ​​at den følgende forespørgsel skal returnere de resultater, du har brug for.

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

Jeg er ret sikker på, at dette er logisk ækvivalent, og når det først er udtrykt i en forenklet form som denne, er det lettere at se, hvordan du kan få det til også at returnere det ekstra tidsrum.

Du bør have en separat forespørgsel, du kan bruge, når du udfylder tidsvinduerne for en ny reservation, der ikke har et eksisterende tidsrum, i hvilket tilfælde du bare kan fjerne den enkelte linje t.id = '{fab_booking___book_starttime}' OR .




  1. Postgres - Funktion til at returnere skæringspunktet mellem 2 ARRAY'er?

  2. ORACLE IIF-erklæring

  3. Forskellen mellem SET autocommit=1 og START TRANSACTION i mysql (Er jeg gået glip af noget?)

  4. ved hjælp af php mysqli opret hovedbog og få balance i henhold til DR og CR