Как выбрать все свободные места?

Есть вот такая структура
1f66225359d8413ca0f5eeaec91a2615.png
В таблице tickets указано с какого и по какое время занят определённый "стул" в парикмахерской
"стул" и парикмахерская связаны много-к-одному
Как выбрать все свободные "стулья" по всем парикмахерским в определённое время, учитывая что стрижка длится 30 минут
  • Вопрос задан
  • 252 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Конечная цель какая? Проверить, что в указанное время можно прийти стричься? Тогда так:
SELECT `c`.`id`
  FROM `chair` AS `c`
  LEFT JOIN `tickets` AS `t` ON `t`.`chair_id` = `c`.`id`
    AND :desiredTime < (`t`.`time_from` + INTERVAL 30 MINUTE)
    AND `t`.`time_from` < (:desiredTime + INTERVAL 30 MINUTE)
  WHERE `t`.`chair_id` IS NULL

Только непонятно, зачем два поля `time_from`.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы