PGError: ERROR: столбец "p.name" должен присутствовать в предложении GROUP BY или использоваться в статистической функции - PullRequest
3 голосов
/ 24 января 2011

Я получаю сообщение об ошибке с этим запросом.Зачем?Я не понимаю: (

    SELECT p.name, p.id, SUM(hours) AS hours, SUM(logged_hours) AS logged_hours
    FROM (
        SELECT project_id, date, hours, null AS logged_hours
        FROM #{ScheduleEntry.table_name}
        WHERE user_id = #{User.current.id}
            AND date BETWEEN '%s' AND '%s'
        UNION
        SELECT project_id, spent_on AS date, null AS hours, sum(#{TimeEntry.table_name}.hours) AS logged_hours
        FROM #{TimeEntry.table_name}
        WHERE user_id = #{User.current.id}
            AND spent_on BETWEEN '%s' AND '%s'
        GROUP BY project_id, date
    ) AS results
    LEFT JOIN #{Project.table_name} AS p ON p.id = results.project_id
    GROUP BY project_id

1 Ответ

10 голосов
/ 24 января 2011

Изменить GROUP BY project_id на GROUP BY p.name,p.id

Документы говорят:

Когда присутствует GROUP BY, оно недопустимо для SELECT список выражений для ссылки на не сгруппированные столбцы, кроме как в агрегатных функциях, поскольку для не сгруппированного столбца будет более одного возможного значения.

...