Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在左联接表中使用按计数排序_Sql_Doctrine_Doctrine 1.2 - Fatal编程技术网

Sql 在左联接表中使用按计数排序

Sql 在左联接表中使用按计数排序,sql,doctrine,doctrine-1.2,Sql,Doctrine,Doctrine 1.2,我在按计数字段对查询结果排序时遇到问题。我的简化查询: $customers = Doctrine_Core::getTable("Customer")->createQuery("c") ->leftJoin("c.Project p") ->orderBy("COUNT(p.id) ASC"); ->execute(); 我很确定这个问题与条令无关。从应用程序日志检索的ORM生成的查询只选择一行,其中包含一行: ORDER BY 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
删除后,所有行都被正确选择


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

如果您试图根据客户的项目数量进行分组,请尝试使用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();

您能否将ORM生成的查询的其余部分添加到问题中?按聚合值排序只能在分组查询上进行-如果要按p.id排序(而不是按p.id计数),则应将查询更改为
order by r2.id ASC
。否,我希望它按相关行数排序。“否”是否意味着您无法将ORM生成的查询的其余部分添加到问题中?不,不,是关于按ID排序的。我稍后会附加查询的其余部分,因为我现在没有访问该应用程序的权限。另外,这是MySQL吗?(我怀疑这种形式的查询在大多数其他RDBMS中都会失败。)