Доктрина - фильтр по иностранной совокупной стоимости - PullRequest
1 голос
/ 29 октября 2009

как я могу использовать результат функции Agregate, где в Doctrine?

Например, я хочу знать пользователя с глупыми номерами.

SELECT  u.name, COUNT(p.id) AS users_phonenumber_count
FROM    users u

    INNER JOIN phonenumbers p ON p.user_id = u.id
WHERE
    users_phonenumber_count > 10
GROUP BY
    u.id

Как я могу получить доступ к users_phonenumber_count где в Dql?

Ответы [ 2 ]

0 голосов
/ 29 октября 2009

Тебе нужно использовать ХАВИНГ, а не ГДЕ. Кроме того, вам нужно сгруппировать что-то, что на самом деле в вашем запросе, в данном случае u.name. Предполагая, что u.name уникально - если нет, вам нужно сгруппировать по u.id и u.name.

SELECT  u.name, COUNT(*) AS users_phonenumber_count
FROM    users u

    INNER JOIN phonenumbers p ON p.user_id = u.id
GROUP BY
    u.name
HAVING
    count(*) > 10
0 голосов
/ 29 октября 2009

Я не могу вспомнить точные детали того, как я это сделал, но помните, что пришлось использовать "HAVING"

Это связано с тем, как работает SQL, а не с доктриной - ГДЕ нельзя сравнивать вычисленные значения, вы должны использовать наличие (или вы можете сделать ГДЕ СЧЕТ (что-то) <что-то)

...