2017-09-25 105 views
0

我有以下字段的表操作:SQL子查询SELECT [Symfony3]

  • idAction
  • 讨论终结
  • 日期

我想遍历并显示所有的idAction在我的DB + idActionCloture = 0组到相同的日期(两者)。

我尝试了下面的方法。但它不起作用。谁能帮我?

$query = $this->getEntityManager()->createQuery(

'SELECT COUNT(a.idAction) AS nmbreAction , week(a.dateOuverture) AS week,(SELECT COUNT(c.idAction) , week(c.dateOuverture) FROM ActionActionBundle:Action c 
WHERE c.cloture = 0) AS nmbreRetard FROM ActionActionBundle:Action a 
GROUP BY week'); 

回答

0

嗯,你的问题缺乏大量的信息。这是你需要的吗?

SELECT COUNT(a.idAction) AS nmbreAction , 
     week(a.dateOuverture) AS week, 
     (SELECT COUNT(c.idAction) 
     FROM ActionActionBundle:Action c 
     WHERE c.cloture = 0 
      and week(c.dateOuverture) = week(a.dateOuverture)) AS nmbreRetard 
FROM ActionActionBundle:Action a 
GROUP BY week(a.dateOuverture) 

你不能选择一个子查询\选择列表中的相关查询,这可能表明你在错误信息超过1列。

编辑:更好的做到这一点:

SELECT COUNT(a.idAction) AS nmbreAction , 
     week(a.dateOuverture) AS week, 
     COUNT(CASE WHEN a.cloture = 0 THEN 1 END) as nmbreRetard 
FROM ActionActionBundle:Action a 
GROUP BY week(a.dateOuverture) 
+0

白鹭确切:d谢谢你这么多 –

+0

@ M.Mery没问题。看看编辑,这是一个更好,更有效的方法。无需额外的选择。 – sagi