CakePHP和SQL Server 2008,按不工作分组
每当我做某事时:CakePHP和SQL Server 2008,按不工作分组,sql,sql-server,tsql,cakephp,group-by,Sql,Sql Server,Tsql,Cakephp,Group By,每当我做某事时: $this->Job->find('all', array( 'group' => array('Job.some_field'), 'recursive' => -1 )); 我得到一个: SQL Error: Column 'jobs.id' is invalid in the select list because it is not contained in either an aggregate fun
$this->Job->find('all', array(
'group' => array('Job.some_field'),
'recursive' => -1
));
我得到一个:
SQL Error: Column 'jobs.id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
对于MySQL,它可以正常工作,但是对于SQLServer2008,GROUPBY似乎不再工作了。
我该如何解决这个问题?提前感谢SQL专家将查询转换为以下内容:
SELECT *
FROM Job
GROUP BY
some_field
$this->Job->find('all', array(
'fields' => array('Job.some_field', 'COUNT(*)'),
'group' => array('Job.some_field'),
'recursive' => -1
));
根据SQL
标准,这不是一个有效的查询,但是,由于MySQL
的groupby
扩展,它在MySQL
中工作
您只需在SELECT
子句中保留分组列或聚合:
SELECT some_field, COUNT(*)
FROM Job
GROUP BY
some_field
比如说:
SELECT *
FROM Job
GROUP BY
some_field
$this->Job->find('all', array(
'fields' => array('Job.some_field', 'COUNT(*)'),
'group' => array('Job.some_field'),
'recursive' => -1
));
如果我在查询中使用CONTANDABLE并具有联接,该怎么办?@bakerjr:您需要进行查询,以便将其转换为有效的
SQL
,即SELECT
子句中没有未分组和未聚合的列。谢谢您。虽然我真正想要的是获得字段的不同值以及连接,这就是为什么我在find中使用group(加上containable)。你在这篇文章中回答了这个问题:)@bakerjr:如果你需要不同的值,你很可能会受益于在条件下将连接重写为。我想我不得不将其作为自定义查询写入cake,你同意吗/