在左连接表中使用按次数排序

时间:2012-03-12 13:53:52

标签: sql doctrine doctrine-1.2

我遇到了count字段对查询结果进行排序的问题。我的简化查询:

$customers = Doctrine_Core::getTable("Customer")->createQuery("c")
    ->leftJoin("c.Project p")
    ->orderBy("COUNT(p.id) ASC");
    ->execute();

我很确定问题不是与学说有关。从应用程序日志中检索到的ORM生成的查询仅选择一行,并且它包含一行:

ORDER BY COUNT( r2.id ) ASC

删除后正确选择了所有行。

ORDER BY子句使查询只从customers表中选择一行。我认为这与没有分配任何项目的客户有关。我做错了什么?

1 个答案:

答案 0 :(得分:0)

如果您尝试按客户的项目数分组,请尝试使用GROUP BY子句并聚合客户的主键:

$customers = Doctrine_Core::getTable("Customer")->createQuery("c")
->select('c.*, count(p.id) as count')
->leftJoin("c.Project p")
->groupBy('c.id') // or the primary key of Customer
->orderBy("count ASC")
->execute();