Doctrine - 按外部聚合值过滤

时间:2009-10-29 12:51:55

标签: php postgresql dql doctrine

如何在Doctrine中使用Agregate函数的结果?

例如,我想知道用户的数字很多。

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

如何访问Dql中的 users_phonenumber_count

2 个答案:

答案 0 :(得分:0)

我不记得我是如何做到的确切细节,但请记住它必须使用“HAVING”

这是因为SQL的工作方式,而不是特定的学说 - WHERE无法比较计算值,你必须使用(或者你可以做WHERE COUNT(某事)< something)

答案 1 :(得分:0)

你需要使用HAVING,而不是WHERE。此外,您需要按查询中实际存在的内容进行分组,在本例中为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