在以下情况下,用户属于几个组。这些小组的层级组织:
我想汇总用户所属组的所有个人信息。例如。人员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;
此查询的问题是我得到了重复的信息:
我不想在array_agg(info)字段上使用UNIQUE。而是我想写我的联接,以便只获得个人信息表的唯一行。
我该怎么做?谢谢
答案 0 :(得分:0)
我通过以下查询解决了该问题:
SELECT person.id, array_agg(info) FROM person
LEFT JOIN person_information ON
person_information.id IN (
SELECT DISTINCT(UNNEST(path))
FROM person_group
WHERE ARRAY[person.group_id] && path
) GROUP BY person.id;
您有更好的方法吗?