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