如何在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 ?
答案 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