【发布时间】:2012-03-30 12:35:56
【问题描述】:
我在按计数字段对查询结果进行排序时遇到问题。我的简化查询:
$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 子句使查询只从客户表中选择一行。我认为这与客户没有分配任何项目有关。我做错了什么?
【问题讨论】:
-
您能否将 ORM 生成的查询的其余部分添加到问题中?按聚合值排序只能在分组查询中完成 - 如果您想按 p.id(而不是 p.id 的计数)排序,那么您应该将查询更改为
ORDER BY r2.id ASC。 -
不,我希望它按相关行数排序。
-
“否”是否意味着您无法将 ORM 生成的查询的其余部分添加到问题中?
-
不,不,这是关于按 id 排序的问题。稍后我将附加查询的其余部分,因为我现在无法访问该应用程序。
-
另外,这是 MySQL 吗? (我怀疑这种形式的查询在大多数其他 RDBMS 中都会失败。)
标签: sql doctrine doctrine-1.2