Запрос с датами и лимитом (необязательно в DQL)

у меня есть немного сложный запрос в базе данных MySQL. У меня есть отношение, которое находится на изображении:

ERD image
Параметры запроса: id_category, день, время :

  • из выбранной категории
  • который в выбранную дату и время имеет меньше посещений, чем ограничение в категории услуг
  • сгруппированы по идентификатору ServicePoint

На словах я могу сказать, что хочу найти объекты, у которых есть доступные слоты на текущую дату.

Лучше всего для меня было бы в DQL не ясно sql, но, конечно, я могу преобразовать это.

Надеюсь понятно.


person Pawel    schedule 28.05.2013    source источник


Ответы (1)


Что-то вроде этого должно работать:

 SELECT sp.id
 FROM servicepoint sp
      INNER JOIN visit vt 
            ON sp.id = vt.id_service_point
 WHERE sp.category_id = categoryId    --categoryId is query param
       AND start >= startTime          --starttime is query param
       AND end <= endTime              --endTime is query param   
 GROUP BY sp.id
 HAVING COUNT(vt.id) < sp.visit_limit;
person Yogendra Singh    schedule 28.05.2013
comment
А если нет посещений? Тогда результатом будет 0 баллов обслуживания? - person Pawel; 03.06.2013
comment
В этом случае вы можете рассмотреть левое внешнее соединение. - person Yogendra Singh; 04.06.2013