У меня есть три таблицы, как это:выберите данные, относящиеся к категории
таблица игрок: идентификатор, имя
стол matchevent: идентификатор, player_id, eventcategory_id, описание
таблица eventcategory: id, имя
отношений: игрок: matchevent - 1: N matchevent: eventcategory - N: 1
В таблице игрока, у меня есть имена футболиста и в eventcategory событий, как желтую карточку, замена и т.д. В таблице 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' –
Count, конечно. Виноват. – repincln