У меня 2 стола. availabilities
и time_slots
. В таблице availabilities
есть столбец time_slot_id
. time_slots
просто хранит все времена 24-часового дня с 15-минутными интервалами. Он имеет столбцы from
, to
и sequence
. С данными в нем это выглядит так.
|from |to |sequence
|00:00:00 |00:15:00 |0
|00:15:00 |00:30:00 |1
|00:30:00 |00:45:00 |2
|00:45:00 |01:00:00 |3
и так снова до полуночи с увеличением последовательности на 1. Мне нужно получить доступность, где ее временной интервал является последовательным с тем, который примыкает к нему с обеих сторон, а затем подсчитать количество последовательных доступности. Пока у меня есть этот запрос ниже, который выводит все возможности, которые имеют последовательные временные интервалы, но не могу понять, как их подсчитать.
SELECT a1.date, ts1.sequence, ts1.from, ts1.to
FROM availabilities a1
LEFT JOIN time_slots ts1 ON a1.time_slot_id = ts1.id
WHERE EXISTS (SELECT *
FROM availabilities a2
LEFT JOIN time_slots ts2 ON a2.time_slot_id = ts2.id
WHERE ts1.sequence IN (ts2.sequence - 1, ts2.sequence + 1)
)
Вполне возможно, что может быть много наборов последовательной доступности, поэтому нужно просто убедиться, что хотя бы один из наборов последовательной доступности больше определенного количества (например, 3), которое может каждый раз быть другим. Этот номер переменной будет зависеть от импорта некоторых пользователей, но мне просто нужно знать, как убедиться, что у меня достаточно возможностей для покрытия этого количества.
Любая помощь очень ценится.