2016-03-29 17 views
0

私は1つのテーブルで1つのクエリで複数のカウントを取得しようとしています。このアクションでsymfony doctrine multiple count

return $this->getEntityManager()->createQuery(
     'SELECT COUNT(c1) AS enabled, COUNT(c2) AS disabled, COUNT(c3) AS locked 
     FROM AcmeUserBundle:User c1, AcmeUserBundle:User c2, AcmeUserBundle:User c3 
     WHERE c1.enabled = 1 
     AND c2.enabled = 0 
     AND c3.locked = 1' 
    )->getSingleResult(); 

私はこの結果を得る:私はテーブル全体の簡単な数というもらう

array [ 
    "enabled" => "2" 
    "disabled" => "1" 
    "locked" => "1" 
] 

:私はこれだろうと予想

array [ 
    "enabled" => "4" 
    "disabled" => "4" 
    "locked" => "4" 
] 

結果を。

私はそれをどうやって作ることができるのか知っていますか?

答えて

0

SQLクエリが間違っています。 3つのテーブルのクロス結合を行っていますが、テーブル内の条件を満たす行を数えたいとします。

SELECT SUM(CASE WHEN u.enabled = 1 THEN 1 ELSE 0 END) as enabled, 
     SUM(CASE WHEN u.enabled = 0 THEN 1 ELSE 0 END) as disabled, 
     SUM(CASE WHEN u.locked = 1 THEN 1 ELSE 0 END) as locked 
FROM AcmeUserBundle:User u 
+0

ありがとう、コピーして貼り付けます。 – Arnaud