2012-04-04 84 views
1

我想算从另一个表有多少条记录在同一个SELECT语句中,我使用LEFT JOIN 并在select语句我把计数(AG。*) 看到 例:
COUNT(*)只返回一个记录

$q = Doctrine_Query::create() 
      ->select("a.answer_id,a.date_added , count(ag.content_id) AS agree_count") 
      ->from('Answer a') 
      ->leftJoin("a.Agree ag ON a.answer_id = ag.content_id AND ag.content_type = 'answer' ") 
      ->where('a.question_id= ? ', $questionId) 

但它只是返回的第一条记录,我可以修复吗?或者制作另一张桌子并仅用于计数?

+0

您有固定'question_id' where子句。你确定有更多的行需要预期吗? – Sirko 2012-04-04 14:51:16

+0

你希望输出什么?你是否希望agree_count属性计算整个列表并且也位于每一行中? – Dan 2012-04-04 14:55:31

回答

5

你缺少你查询GROUP BY

更多的相关信息here.

当你没有GROUP BY子句,这是正常的得到的只有一行。

+0

感谢,现在的工作再 – KJA 2012-04-04 15:01:16

+0

肯定,谢谢 – KJA 2012-04-04 15:07:29

0

COUNT(*)将只返回一个记录,如果你不使用分组依据。你要求它记录所有的记录,所以只能有一个结果。

0

计数()的SQL函数变化的结果是如何从数据库返回 - 没有GROUP BY数据库将只在SELECT返回一个记录,无论其他柱的侧向承载力。

如果添加:

group by a.answer_id 

到您的SQL查询的末尾,这可能DWYM。