ее по одному полю, а выбрать нужно еще и другие
select "tk"."type", "t"."content", "relation_id", l.code as lang_code, l.name as lang_name
from "page_metadata"
inner join "translators" as "t" on "t"."id" = "page_metadata"."translator_id"
inner join "translator_key" as "tk" on "tk"."id" = "t"."translator_key_id"
inner join "language" as "l" on "l"."id" = "t"."language_id"
where "page_metadata"."relation_id" = 1
and "page_metadata"."page_type" = 5
and "tk"."type" = 'body_content'
group by relation_id
В этом случаи я получаю ошибку ERROR: column "tk.type" must appear in the GROUP BY clause or be used in an aggregate function
Если я укажу все поля которые у меня в запросе то группировка потеряет смысл, так как поля имеют разные данные и это будет то же самое что и без группировки, как правильно составлять запрос в таком случаи?
ну а какое вам нужно тогда значение ? если для одного relation_id есть разные l.name ? какое из них выбрать ?
выбрать нужно все что указано в селекте, сделать группировку только по полю relation_id
еще раз какое значение выбрать для l.name, если их более одного ? если у вас нет ответа, то вы не понимаете как работает группировка
"постоянно сталкиваюсь с проблемой группировки если нужно сделать ее по одному полю, а выбрать нужно еще и другие" Звучит как классический случай для использования оконных функций)
значение l.name тоже разные, чуть ошибся в запросе, нужно группировку сделать как раз таки по полю l.name или/и l.code
окей, тогда какие "поля имеют разные данные " и какие нужно выбрать, если в одном столбце несколько разных значений ?
одинаковые только у type, relation_id разные у каждой строки это content code и name одинаковые для двух строк получается этот запрос выбирает записи на 5-х языках, выборка отдает 10 строк, в которых code и name можно сгруппировать по 2 значения
мы все ближе к истине так какой content вам нужен для каждого type ? первый ? последний? максималтьный ? средний ? любой? все ? вы же не указали вот пострес на вас и ругается
блин… я кажись понял что я чуть затроил с утра, и мне нужна не группировка, а union, мне нужно добавить в выборку поле, а не как вы правильно сказали выбрать только одно тот случай когда ответ пришел после того как описал то что мне нужно сделать)
Обсуждают сегодня