Предотвратить встречи в тот же час MySql

Я надеюсь, что вы можете помочь мне разобраться с этой маленькой проблемой, которая у меня возникла с назначениями.

Получил таблицу под названием ЧАСЫ, которая показывает доступные часы и дни.

Часы стола

И стол под названием APPOINTMENTS, который берет клиент.

Назначения столов

Вот мой запрос на выбор, чтобы узнать, какие часы доступны:

SELECT *
FROM Hours T1
WHERE NOT EXISTS (
SELECT T2.Hours
FROM Appointments T2
WHERE T2.hour = T1.hour
AND T2.date = '17/08/2018'
)
AND T1.days LIKE '%SAT%'

Если я сделаю это, он вернет все часы из таблицы ЧАСОВ без 12:00, 12:30, что является правильным.

Я знаю, как сделать так, чтобы он не показывался 13:00, потому что продолжительность встречи с идентификатором 2 составляет 60 минут, и это ненормально прерывать встречу, чтобы взять другой xD

Так вот в чем проблема: как я могу избежать показа 11:30, если клиент хочет назначить встречу дольше, чем 30 минут?

Есть идеи, чтобы сделать это прямо на SQL? Или я должен сделать это позже, когда я положу это в стол?

-3

Решение

Добавить встречу duration на встречу hourи убедитесь, что это меньше, чем hour с часов.

Я бы также использовал шаблон против объединения вместо NOT EXISTS

Что-то вроде этого:

SELECT h.hour
FROM Hours h
LEFT
JOIN Appointments a
ON a.date = '17/08/2018'
AND a.hour + INTERVAL          0 MINUTE  >=  h.hour + INTERVAL  0 MINUTE
AND a.hour + INTERVAL a.duration MINUTE  <   h.hour + INTERVAL  0 MINUTE
WHERE a.hour IS NULL
AND h.days LIKE '%SAT%'

Это вернет строки из hours которые не пересекаются с существующим appointment, Если мы хотим проверить, есть ли целый час для встречи, нам нужно будет передать 60 минут на запрос, чтобы мы могли сопоставить строки из hours это будет совпадать.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]