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;
    

    これは論理的に同等であると確信しています。このように簡略化された形式で表現すると、追加のタイムスロットを返す方法を簡単に確認できます。

    既存のタイムスロットがない新しい予約のタイムスロットを設定するときに使用する別のクエリが必要です。この場合、1行のt.id = '{fab_booking___book_starttime}' OR




    1. ORDERBYの後にGROUPBY

    2. PHPでMySQLフィールドのコメントにアクセスする

    3. iOS用CloudFirestore入門

    4. Microsoftによるデータベースの命名規則?