选择2张桌子

时间:2019-10-29 09:59:42

标签: sql postgresql

如何从具有原始表的另一个表中选择属性

1 个答案:

答案 0 :(得分:1)

您应该修复数据模型。您应该有三个表:

  • users:每位用户一行
  • groups:每组一行
  • user_groups:每个用户/组组合一行

对于您的数据模型,我将使用数组来取消透视值,然后重新聚合:

与JSON相比,我更喜欢使用数组,因此我将使用:

select ug.type,
       (select array_agg(u.name)
        from (unnest(array[ug.user_1, ug.user_2, ug.user_3])) ar(user_id) join
             users u
             on u.user_id = u.id
       ) as users
from user_groups ug;

如果您确实需要JSON,则可以使用JSON函数。