1

我想在同一个选择语句中计算另一个表中有多少条记录,我使用了左连接,在选择语句中我放了count(ag.*) 参见示例:

$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)

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

4

3 回答 3

5

您的查询中缺少 a GROUP BY

更多信息在这里。

当您没有 GROUP BY 子句时,只获取一行是正常的。

于 2012-04-04T14:51:32.507 回答
0

如果不使用 Group By,Count(*) 只会返回一条记录。您要求它计算所有记录,因此只能有一个结果。

于 2012-04-04T14:52:57.920 回答
0

count() SQL 函数改变了从数据库返回结果的方式——如果没有GROUP BY,数据库将只返回一条记录,而不管SELECT.

如果您添加:

group by a.answer_id

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

于 2012-04-04T14:56:44.933 回答