У меня следующий сценарий: пользователь принадлежит к нескольким группам. Группы организованы в иерархии:
Я хочу собрать всю личную информацию о группах, к которым принадлежит пользователь. Например. Лицо 1 принадлежит к группе 7. А группа 7 имеет связи со следующими группами 1,5,7,8 (полная ветвь)
Я написал следующий запрос:
SELECT person.id, array_agg(info)
FROM person LEFT JOIN person_group
ON ARRAY[person.id] && path
LEFT JOIN person_information ON
ARRAY[person_information.id] && path
GROUP BY person.id;
Проблема с этим запросом заключается в том, что я получаю дубликат Информация:
Я не хочу использовать UNIQUE в поле array_agg (info). Скорее я хотел бы написать свое объединение, чтобы я получал только УНИКАЛЬНЫЕ строки таблицы информации о людях.
Как бы я это сделал? Спасибо