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,你同意吗/