date_begin
とdate_end
フィールドに従って予約をすべて選択する必要があります。私は選択された日付カレンダーの10日間だけを表示するカレンダーを持っています。MySQL - 日付別に予約を予約
2017-05-15 -> Date chosen by user
2017-05-10 -> Date begin
2017-05-20 -> Date end
そして、現在、私のクエリは次のようである:
SELECT *
FROM bookings
WHERE ((date_begin >= '2017-05-10' AND date_begin <= '2017-05-20') OR
(date_end >= '2017-05-10' AND date_end <= '2017-05-20'))
は今、何が起こるかは、お客様のご予約の90%が、カレンダーや作品に表示さないということですが、1 場合があります。
予約が(カレンダーの上限である)長い10日以上である場合ならば、それが唯一のカレンダーに表示されます:date_begin
カレンダーに存在するか
date_end
が中に存在する
- カレンダー
つまり、いくつかの日付の間にカレンダーにギャップがあることを意味します。
2017-05-15 -> Date chosen by user
2017-05-10 -> Date begin
2017-05-20 -> Date end
2017-05-11 -> Date begin reservation
2017-05-27 -> Date end reservation
Shows in calendar? Yes
2017-05-16 -> Date chosen by user
2017-05-11 -> Date begin
2017-05-22 -> Date end
2017-05-11 -> Date begin reservation
2017-05-27 -> Date end reservation
Shows in calendar? Yes
2017-05-17 -> Date chosen by user
2017-05-12 -> Date begin
2017-05-23 -> Date end
2017-05-11 -> Date begin reservation
2017-05-27 -> Date end reservation
Shows in calendar? No!
2017-05-18 -> Date chosen by user
2017-05-13 -> Date begin
2017-05-24 -> Date end
2017-05-11 -> Date begin reservation
2017-05-27 -> Date end reservation
Shows in calendar? No!
2017-05-21 -> Date chosen by user
2017-05-16 -> Date begin
2017-05-27 -> Date end
2017-05-11 -> Date begin reservation
2017-05-27 -> Date end reservation
Shows in calendar? Yes
クエリを改善するにはどうすればよいですか?