Рассмотрим следующую таблицу недоступности консультанта
c_id | start_date |end_date
---------------------------------------------
937 | 2018-06-01 13:00:00 | 2018-06-01 20:00:00
937 | 2018-04-28 08:00:00 | 2018-04-28 18:00:00
938 | 2018-06-28 14:00:00 | 2018-06-28 16:00:00
938 | 2018-06-16 14:00:00 | 2018-06-16 17:00:00
939 | 2018-05-05 09:00:00 | 2018-05-05 12:00:00
939 | 2018-06-08 12:00:00 | 2018-06-08 16:00:00
Теперь я хочу, чтобы консультанты были доступны 16 июня с 09:00 до 18:00
Это то, что я до сих пор:
SELECT c_id, start_date, end_date
FROM consultant_unavailabilities
WHERE start_date NOT BETWEEN '2018-06-16 09:00:00' AND '2018-06-16 18:00:00'
AND end_date NOT BETWEEN '2018-06-16 09:00:00' AND '2018-06-16 18:00:00'
GROUP BY c_id
, который возвращает:
937 | 2018-06-01 13:00:00 | 2018-06-01 20:00:00
938 | 2018-06-28 14:00:00 | 2018-06-28 16:00:00
939 | 2018-05-05 09:00:00 | 2018-05-05 12:00:00
937 и 939 в порядке, но 938 недоступен.
Хитрость заключается в том, чтобы попросить MySQL не получать идентификаторы, которые имеют ряд недоступных функций 16 июня с 09:00 до 18:00.
Как мне этого достичь?