Doctrine-外部集計値によるフィルター
-
10-07-2019 - |
質問
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 にアクセスできますか?
解決
WHEREではなくHAVINGを使用する必要があります。また、クエリ内に実際にある何か、この場合は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
他のヒント
これを行った方法の正確な詳細は思い出せませんが、<!> quot; HAVING <!> quot;
を使用しなければならなかったことを思い出してくださいこれはSQLの動作方法のためであり、特に教義ではありません-WHEREは計算された値を比較できません。
所属していません StackOverflow