如何在mysql中的组\u concat子查询中使用select查询

如何在mysql中的组\u concat子查询中使用select查询,mysql,Mysql,我有三张桌子: tbl_用户存储所有用户详细信息用户id、名称、地址 user_id name address 1 a (shop) home 2 b (shop) bakerstreet 3 c (staff) wallstreet 4 d (staff) georgia 5 e (staff) sydney tbl_用户_组存储用户类型用户id,用户类型:1=

我有三张桌子:

tbl_用户存储所有用户详细信息用户id、名称、地址

user_id    name        address
1         a (shop)      home
2         b (shop)    bakerstreet
3         c (staff)   wallstreet
4         d (staff)    georgia
5         e (staff)    sydney
tbl_用户_组存储用户类型用户id,用户类型:1=店铺所有者,2=员工

user_id    user_type
1             1
2             1
3             2
4             2
5             2
tbl_用户协会持有店铺所有者和员工关系店铺所有者id、员工id

shop_owner_id    staff_id
1                3
1                4
1                5
2                3
2                4
期望结果 我想按如下方式显示员工列表和他们关联的各个店铺:

user_id    staff_name    shop_owner
3          c             a,b  
4          d             a,b
5          e             a
我试着使用上面提到的组_concat。查询如下:

SELECT
u.id                          AS user_id,
u.name                        AS staff_name,
(SELECT GROUP_CONCAT(u.name separator ',') FROM tbl_user u WHERE u.id = ua.shop_owner_id) AS 
shop_owner
FROM tbl_user u
JOIN tbl_user_group ug ON u.id = ug.user_id
LEFT JOIN tbl_user_association ua ON u.id = ua.staff_id
WHERE ug.user_type = 2
GROUP BY u.id
但它返回的是一行人员,如下所示。我哪里出错了

user_id    staff_name  shop_owner
3              c        a
4              d        a
5              e        a
我会这样做:

SELECT
    u.user_id,
    u.name,
    GROUP_CONCAT( so.name )
FROM
    tbl_user_group ug
    INNER JOIN tbl_user u
        ON ( ug.user_id = u.user_id )
    INNER JOIN tbl_user_association ua
        ON ( ua.staff_id = u.user_id )
    INNER JOIN tbl_user so -- here join again the user table to get shop owners names
        ON ( ua.shop_owner_id = so.user_id )
WHERE
    ug.user_type = 2
GROUP BY
    u.user_id;
将tbl_用户u中选择的组_CONCATu.name分隔符“,”替换为组_CONCATu.name分隔符,其中u.id=ua.shop\u owner\u id为shop\u owner,并将其中的组_CONCATu.name分隔符替换为shop\u owner,且替换为WHERE子句u.id=ua.shop\u owner\u id