У меня есть три таблицы, как это:
таблица игрок: идентификатор, имя
таблица matchevent: id, player_id, eventcategory_id, описание
таблица категория событий: идентификатор, имя
Отношения: игрок : событие матча - 1:N событие матча : категория события - N:1
В таблице player у меня есть имена футболистов и события категории событий, такие как желтая карточка, замена и т. д. В таблице matchevent я храню события игроков, которые принадлежат к какой-либо категории.
И теперь я хочу получить COUNT событий, которые есть у всех игроков. Например:
- у первого игрока COUNT желтых карточек 0, замен 0 и голов 0
- у второго игрока 1 желтая карточка, 0 замен и 2 гола
- у третьего игрока 0 желтых карточек, 0 замен 0 голов
- так далее
Как я могу сделать это в DQL? Я пробовал LEFT JOIN и IN, но это не работает. Он выбирает только игроков с событиями, а не всех игроков.
->createQuery('SELECT p, i
FROM MyBundle:player p
LEFT JOIN p.matchevent i
WHERE i.eventcategory IN (:eventcategory)
ORDER BY p.player ASC
')
->setParameters(array(
'eventcategory' => $eventcategory,
))
COUNT
, а неSUM
- person David Starkey   schedule 01.07.2013