下記のような施設使用予約を開始日時と終了日時で管理するテーブルがあります。
id | start(datetime) | end(datetime) |
---|---|---|
1 | 2021/11/05 15:00:00 | 2021/11/05 16:00:00 |
2 | 2021/11/05 17:00:00 | 2021/11/05 18:00:00 |
3 | 2021/11/05 18:00:00 | 2021/11/05 19:00:00 |
4 | 2021/11/05 20:00:00 | 2021/11/05 21:00:00 |
画面で入力した開始日と終了日を使ってその期間に予約が入っているか検索をかける機能を実装しています。
例)
画面で開始日が2021/11/05 16:00:00
、終了日が2021/11/05 17:00:00
と入力された場合、
入力された期間は他の予約と時間が被らずに予約が取れるかチェックする
この場合は取得結果は0件となり予約可能
※仮に16:30から17:30などの予約が入っていた場合は予約不可
上記の仕様で下記のようなSQLで実装をしましたが期待通りに取得ができません。
sql
1SELECT * FROM 2 `orders` 3WHERE 4 ( 5 `start` BETWEEN '2021-11-05 16:00:00' AND '2021-11-05 17:00:00' 6 OR 7 `end` BETWEEN '2021-11-05 16:00:00' AND '2021-11-05 17:00:00' 8 )
そもそも上記のSQLの考え方が間違っているのでしょうか。。
考え方だけでも助言頂けるとありがたいです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/03 04:15