2016-08-26 4 views
0

Я хочу присоединиться к таблице с несколькими строками и объединить один из столбцов из всех строк в один столбец.объединить все столбцы строк в один столбец из объединенной таблицы

select a.parent_id,a.parent_name,concat(b.child_name) from parent a 
join children b on (a.parent_id=b.parent_id); 

Это должно возвращать все родительские строки, и каждая родительская строка должна иметь все дочерние элементы.

Я собираюсь сгруппировать с parent_id, но получаю несколько записей (одна запись на ребенка). Какую логику я могу реализовать здесь, кроме группировки, чтобы получить все дочерние элементы для родителя в одной строке.

+0

Возможный дубликат [Как конкатенации строк поля строки в PostgreSQL «группе» запроса?] (Http://stackoverflow.com/questions/43870/how-to-concatenate-strings-of -a-string-field-in-a-postgresql-group-by-query) – Matt

+0

postgres 9.0 + string_agg() и group by – Matt

+0

Если я делаю группу с именем child_name, я получаю ошибку as-column "a.parent_name" должен появиться в предложении GROUP BY или использоваться в агрегатной функции – hemanth

ответ

1
SELECT a.parent_id, a.parent_name, STRING_AGG(b.child_name, ',') as Children 
FROM 
    Parent a 
    INNER JOIN children b 
    ON a.Id = b.ParentId 
GROUP BY 
    a.parent_id 
    ,a.parent_name 
Смежные вопросы