繁体   English   中英

同时选择两个表

[英]Selecting two tables at the same time

我有用户user_groups表,如下所示:

用户

id - PK
name
timestamp

用户组

user_1 - Foreign key to users id
user_2 - Foreign key to users id
user_3 - Foreign key to users id
type

我有一个 id = 1 的用户。我想 select 这个用户加入的所有组,组成员的名称用户组的类型 我可以只用一个查询来做到这一点吗? 实现这一目标的最佳方法是什么?

样本数据

用户

id - 1
name - Jeff

id - 2
name - Mehmet

id - 3
name - Walter

用户组

user_1 - 1
user_2 - 2
user_3 - null
type - 1

user_1 - 1
user_2 - 2
user_3 - 3
type - 1

user_1 - 1
user_2 - 3
user_3 - null
type - 2

output 应该如何:

[{
type: 1,
name: ["Jeff", "Mehmet"]
},

{
type: 1,
name: ["Jeff","Mehmet","Walter"]
},

{
type: 2,
name: ["Jeff", "Mehmet"]
}]

您需要多个连接和一些数组功能:

select ug.type,
       array_remove(array[u1.name, u2.name, u3.name], null)
from user_groups ug left join
     users u1
     on ug.user_1 = u1.id left join
     users u2
     on ug.user_2 = u2.id left join
     users u3
     on ug.user_3 = u3.id;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM