私は、会議室を予約するアプリケーションに取り組んでおり、私の質問に対して少し助けが必要です。ユーザーが日付と開始時刻と終了時刻を選択すると、その日のその時間帯に利用可能な会議室があるかどうかをデータベースに照会するためにajax呼び出しを行います。これは明らかに、要求された開始時刻の前に開始し、要求された終了時刻の後に終了し、要求された終了時刻の前に終了し、要求された終了時刻の前に終了するなど、さまざまな可能性をすべて意味します。開始時刻と終了時刻の間にあるレコードを選択する方法は?
SELECT room_id From table where (
(start_time >= request_start and end_time <= request_end)
or
(start_time <= request_start and end_time >= request_end)
or
(start_time >= request_start and end_time <= request_end)
or
(start_time <= request_start and end_time >= request_end)
)
ただし、上記は機能していないようです。明らかに、私は要求された時間(要求された開始と終了の前に開始と終了の両方、または要求された開始と終了の後の開始と終了の両方)の外にある部屋を必要としません。しかし、私は、要求開始前に開始し、要求終了前に終了し、要求開始後に開始し、要求終了後に終了するものが必要です。
ロジックが私を逃しているようです。どんな助けでも大歓迎です!
また、私は上記の結果が返されたリスト結果に含まれていないroom_idsを選択するために使用されたサブクエリーであるため、予約されているroom_idsを返したいと考えています。
'> = BとB <=a ==> = B'。あなたはおそらく 'どこにrequest_end> = start_timeとrequest_start <= end_time'と答える –
本当にありがとう! –
トニー、答えとブログへのリンクありがとう。説明は意味をなさないが、それは私にとってはうまくいかないようだ。上記を使用して私は私が期待するものを得ることはありません。サンプルA:11:15-12:45とB:10:30〜11:30リクエスト時間11:00〜11:30上記を使用して、ルームAも返されるにもかかわらず、ルームBが返されます。私は何かを欠いているに違いないが、私はそれを見ていない。 – wblakenc