簡體   English   中英

在兩個不同的表上的GROUP_CONCAT

[英]GROUP_CONCAT on two different tables

我有三張桌子:

員工

id  name
1   Alex
2   John
3   Peter

staff_roles

id  role_name
1   Barber
2   Driver

Assigned_roles

id  staff_id  role_id
1   1         1
2   1         2
3   2         1
4   3         2

我想獲得輸出smth。 喜歡:

name   roles
Alex   [{'id':'1','role_name':'Barber'},{'id':'2','role_name':'Driver'}]
John   [{'id':'1','role_name':'Barber'}]
Peter  [{'id':'2','role_name':'Driver'}]

我正在做:

SELECT
   staff.name,
   GROUP_CONCAT(DISTINCT assigned_roles.role_id) as roles
FROM staff
   LEFT JOIN assigned_roles
      ON assigned_roles.staff_id = staff.id
   LEFT JOIN roles
      ON roles.id = assigned_roles.role_id
GROUP BY
   staff.id

但是如何將角色名稱添加到GROUP_CONCAT以獲得所需的輸出?

您可以像這樣構造最終結果:

SELECT s.name,
       CONCAT('[',
              GROUP_CONCAT(DISTINCT '{''id'':''', ar.role_id, ''',''role_name'':''', r.role_name, '''}'),
              ']')
FROM staff s LEFT JOIN
     assigned_roles ar
     ON ar.staff_id = s.id LEFT JOIN
     roles r
     ON r.id = ar.role_id
GROUP BY s.id;

可能會有所有這些單引號和不尋常字符的錯字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM