[英]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.