好的,所以我正在尝试执行一个包含 4 个表的查询, 用户、事件、event_roles、user_event_role。
用户可以担任多个角色。我想要做的是得到一个看起来更像这样的结果: 用户、事件、角色
因此,如果用户“Bill”与事件“Meeting”相关联,并且“Bill”扮演多个角色,而不是得到这样的结果:
user event role
--------------------------
bill Meeting admin
bill Meeting director
我怎样才能得到这样的结果
user event role role
----------------------------------
bill Meeting admin director
这是我尝试构建的查询。
Select *
FROM `users` u
LEFT JOIN `event_role` er ON u.user_id = er.user_id
LEFT JOIN `events` e ON er.event_id = e.event_id
最佳答案
你寻求的结果是不可能的。
但是有一些接近的东西:
SELECT
user,
event,
group_concat(role SEPARATOR ',') as roles
FROM
`users` u
LEFT JOIN `event_role` er
ON u.user_id = er.user_id
LEFT JOIN `events` e
ON er.event_id = e.event_id
GROUP BY u.user_id
这会产生:
user event roles
----------------------
bill Meeting admin,director
无论哪种情况,您都需要调整逻辑以正确解析它。
关于MySQL 使用 Group By 来限制结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14791936/