Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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
在Mysql中将一行连接到另一个表中的多行_Mysql_Sql_String_Subquery_Left Join - Fatal编程技术网

在Mysql中将一行连接到另一个表中的多行

在Mysql中将一行连接到另一个表中的多行,mysql,sql,string,subquery,left-join,Mysql,Sql,String,Subquery,Left Join,我有两个名为(user)和(department)的表,一个用户可以有任意数量的department。例: 用户 id name ----------- 1 user1 2 user2 3 user3 部门 id name ----------- 1 dept1 2 dept2 3 dept3 u_id d_name ---------------- 1 1 1 2 1

我有两个名为(user)和(department)的表,一个用户可以有任意数量的department。例:

用户

id     name
-----------
1     user1
2     user2
3     user3
部门

id     name
-----------
1     dept1
2     dept2
3     dept3
u_id     d_name
----------------
1           1
1           2
1           3
2           2
2           3
我已创建另一个表调用用户\u dept

用户部门

id     name
-----------
1     dept1
2     dept2
3     dept3
u_id     d_name
----------------
1           1
1           2
1           3
2           2
2           3
第三个表(用户\部门)列是来自用户表和部门表的FK


我想要的是调用用户,并且在各部门之间以(,)分隔的单行中有三个部门。

您可以使用
group\u concat()
和相关子查询:

select 
    u.*,
    (
        select group_concat(d.name)
        from user_departments ud 
        inner join departments d on d.d_id = ud.id
        where ud.u_id = u.id
    ) dept_names
from users u
这也可以通过连接和外部聚合来完成:

select u.*, group_concat(d.name) dept_names
from users u
left join user_departments ud on ud.u_id = u.id
left join departments d on d.d_id = ud.id
group by u.id