如何在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

有帮助吗?

解决方案

你需要使用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

其他提示

我不记得我是如何做到这一点的确切细节,但请记住它必须使用<!>“; HAVING <!>”;

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top