我有2个表加入3个表,因此有多对多的关系,我试图让所有用户显示一次,但是所有用户都是用户组
Users
- user_id
- email
groups
- group_id
- broup_name
users_groups
- users_groups_id
- user_id
- group_id
我正在尝试获取所有用户并显示每个用户一次,但是所有用户都是用户组,如下所示:
some@user.dk - admin, moderator, public
another@user.dk - moderator, public
甚至可以选择这样的数据,还是必须在代码中对其进行排序?
答案 0 :(得分:2)
是的,这是可能的。这很容易。
SELECT email, GROUP_CONCAT(DISTINCT group_name ORDER BY g.group_id) AS groups
FROM Users AS u
JOIN users_groups AS ug ON u.user_id = ug.user_id
JOIN Groups AS g on ug.group_id = g.group_id
GROUP BY email
ORDER BY email
每个电子邮件将显示一行,其中属于该用户的不同组按组ID的顺序显示。 Ť