たくさんの本を収納するテーブルがあります。顧客は、日中いつでも予約できます。新しい予約と競合する予約がまだ存在していないことを確認したいのですが。
その日の予約を見つけて、開始時刻と終了時刻が重なっていないことを確認したいと思います。その日の予約を取得するためにサブ選択クエリを使用してこれを実行しようとしましたが、それらの時間が重複しているかどうかを確認しましたが、機能していないようです。
これが私が使用しているクエリです。(ステータスとアクティブは、私が必要とする他のフィールドです)。関連する日付を見つけて、午前 8 時がこれらの結果の個々の開始時間と終了時間の間にあるかどうか、または午前 9 時 40 分も開始時間と終了時間の間にあるかどうかを確認します。
SELECT event_date, starttime, endtime, status, active
FROM (SELECT event_date, starttime, endtime, status, active FROM bookings WHERE event_date='2013-07-21' AND status != 'cancelled' AND active !=0 LIMIT 1) AS q1
WHERE ('8:00:00' BETWEEN q1.starttime AND q1.endtime) AND ('9:40:00' BETWEEN q1.starttime AND q1.endtime)
これは使用するのに最適な方法ですか?ありがとう