Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 同时选择两个表_Sql_Database_Postgresql - Fatal编程技术网

Sql 同时选择两个表

Sql 同时选择两个表,sql,database,postgresql,Sql,Database,Postgresql,我有如下用户和用户组表: 使用者 用户组 我有一个id为1的用户。我要选择此用户加入的所有组、组成员的名称和用户组的类型。我可以只用一个查询就完成吗?实现这一目标的最佳方式是什么 样本数据 使用者 用户组 输出应如何: [{ type: 1, name: ["Jeff", "Mehmet"] }, { type: 1, name: ["Jeff","Mehmet","Walter"] }, { type: 2, name: ["Jeff", "Mehmet"] }] 您需要多个联接和一些阵

我有如下用户和用户组表:

使用者

用户组

我有一个id为1的用户。我要选择此用户加入的所有组、组成员的名称和用户组的类型。我可以只用一个查询就完成吗?实现这一目标的最佳方式是什么

样本数据

使用者

用户组

输出应如何:

[{
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;

是的,这就是联接的全部思想:在一个查询中将两个表联接在一起。在这种情况下,您希望从将user\u group name加入到用户表name列的user\u groups表中选择类型和名称。您不是已经问过了吗?
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
[{
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;