Мы пытаемся запустить этот запрос.Группа Запрашивая дополнительные столбцы
select ccr.id as id, ccr.title as name, c.name as contract, ccr.status as status
from change_request ccr
LEFT JOIN contract c ON ccr.contract_id = c.id
where ccr.id < 2000
GROUP BY ccr.id, c.id
order by id
он бросает ошибку * ** Ошибка ** *
ОШИБКА: колонка "ccr.title" должен появиться в GROUP BY или быть пунктом используемый в агрегированной функции Состояние SQL: 42803 Характер: 22
Почему он запрашивает несколько столбцов из одной таблицы. Я имею в виду, если мы будем группировать ccr.id, тогда не следует задавать все столбцы из одной таблицы.
Более интересно то, что следующий запрос (аналогичный выше) работает нормально.
select aim.id as id, aim.name as name, c.name as contract, aim.planned_completion_date as plannedcompetitiondate
from action_item_mgmt aim
LEFT JOIN contract c ON aim.contract_id = c.id
WHERE aim.id < 2000
group by aim.id, c.id
order by id
Является ли 'ccr.id' основным ключом таблицы change_request? Я знаю, что это логично, но похоже, что столбцы идентичности не обязательно являются первичными ключами. Чтобы Postgresql знал, что другие столбцы в таблице функционально зависят от 'id', он должен быть помечен как первичный ключ – GarethD
Спасибо, у нас возникла проблема. это именно так. Это не первичный ключ. –
Ваш запрос будет работать, если вы используете MySQL. Но для другого сервера базы данных обязательно указывать каждый столбец, кроме тех столбцов, которые содержат агрегатные функции. –