私は、ユーザが異なるサービス期間のサービスを予約することが可能でなければならない予約システムに取り組んでいます。MySQL - 利用可能なタイムスロットを見つけよう
予約済みのタイムテーブルを持つテーブルと空きタイムスロットを返すクエリがすでに格納されているMySQLテーブルがあります。
のように私のbookings
表が見えます:場合
SELECT
a.datetime AS blockstart,
DATE_ADD(a.datetime, INTERVAL 599 SECOND) AS blockend
FROM
datetimes a
LEFT JOIN
(
SELECT *
FROM bookings
WHERE point_id = 1
) b ON
(a.datetime BETWEEN b.start AND b.end)
OR
(DATE_ADD(a.datetime, INTERVAL 599 SECOND) BETWEEN b.start AND b.end)
WHERE b.id IS NULL AND a.datetime BETWEEN '2017-06-17 00:00:00' AND '2017-06-17 23:59:59';
:ここ
datetime (datetime)
2017-06-17 14:40:00
2017-06-17 14:50:00
2017-06-17 15:00:00
2017-06-17 15:10:00
2017-06-17 15:20:00
2017-06-17 15:30:00
2017-06-17 15:40:00
...
がフリータイムスロットを返すクエリです:テーブルは10分間隔が含まれてい
point_id start (datetime) end (datetime)
1 2017-06-17 14:50:00 2017-06-17 14:59:59
1 2017-06-17 15:10:00 2017-06-17 15:19:59
1 2017-06-17 15:40:00 2017-06-17 15:44:59
2 2017-06-17 15:50:00 2017-06-17 16:04:59
2 2017-06-17 16:05:00 2017-06-17 16:14:59
...
datetimes
サービス期間は25分未満です - すべて正常です。 問題は25分を超えるサービスで発生します。私のクエリは、すでに予約されている10分のサービスと重複するスロットを返します。たとえば、13:00:00から13:09:59まで予約しています.1499秒の照会間隔では、12:50:00が返され、次の予約と重複します。 重複するサービスでこの問題を解決するのに手伝ってくれる人はいますか?
[テーブルから忙しいavaliable mysqlのショータイムスロットとタイムスロット]の可能性のある重複( https://stackoverflow.com/questions/16459756/mysql-show-time-slots-avaliable-and-time-slots-busy-from-table) – Evert
いいえ、あなたのリンクによる@Evertは、 11:00から14:20までですが、クエリでは10分間隔で空きが返され、この選択された時間にクライアントが記録されます。 – t0niq