CakePHP и SQL Server 2008, группа By не работает - PullRequest
3 голосов
/ 27 апреля 2010

Всякий раз, когда я делаю:

$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 он работает нормально, но с SQL Server 2008 кажется, что group by больше не работает Как это исправить? Заранее спасибо гуру SQL

1 Ответ

1 голос
/ 27 апреля 2010

Запрос переводится примерно так:

SELECT  *
FROM    Job
GROUP BY
        some_field

Это недопустимый запрос в соответствии со стандартами SQL, однако он работает в MySQL из-за расширений MySQL GROUP BY.

В предложении SELECT необходимо оставить только сгруппированные столбцы или агрегаты:

SELECT  some_field, COUNT(*)
FROM    Job
GROUP BY
        some_field

с чем-то вроде этого:

$this->Job->find('all', array(
        'fields' => array('Job.some_field', 'COUNT(*)'),
        'group' => array('Job.some_field'),
        'recursive' => -1
    ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...