php - Doctrine - 按外部聚合值过滤

标签 php postgresql dql doctrine

我如何在 Doctrine 的 where 中使用聚合函数的结果?

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

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

关于php - Doctrine - 按外部聚合值过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1643499/

相关文章:

php - 如何在 PHP 中使用其他语言的 echo 或 print

node.js - Sequelize 连接表错误 : DatabaseError [SequelizeDatabaseError]: column does not exist

postgresql - 如何设计数据库服务类

php - doctrine dql where子句与关联实体的解释

php - Doctrine2 Multiple Join 适用于 createQuery 但不适用于 queryBuilder

php - 让 PHPStan 理解 Laravel Eloquent Builder query()

php - 为什么需要自己的 php 文件安全性,当已经给予 .htaccess 安全性时?

php - 如果多行不存在则插入,如果存在则更新

postgresql - 获取分区表的表大小(Postgres 10+)

php - Doctrine2 错误 "Expected known function, got ' COUNT'"when in order by clause