【问题标题】:MYSQL: help joining three tableMYSQL:帮助加入三个表
【发布时间】:2016-09-11 02:30:28
【问题描述】:

我有三张桌子:
角色
摆脱,名字

usr_role
uid,摆脱

usr
uid、用户名、名字

我想加入 usr 表和角色表,并在第三列列出所有用户的所有角色名称,用逗号分隔

例如

uid、用户名、名字、角色 1、user1、name1、role_name1、role_name2 2、user2、name2、role_name3、role_name4、role_name 5

我可以通过以下方式加入表格:

SELECT DISTINCT u.uid AS userid, u.username AS Username,
                u.firstname AS Name, r.name AS Role 
FROM usr u LEFT JOIN usr_role 
  ON  u.uid=usr_role.uid LEFT JOIN role r 
  ON r.rid=usr_role.rid

但我似乎被困得更远了

【问题讨论】:

  • 一般来说,最好在表现层处理数据显示的问题,如果可以的话——例如 PHP 中的一个简单循环

标签: mysql join


【解决方案1】:

使用GROUP_CONCAT()

SELECT u.uid AS userid, u.username AS Username, u.firstname AS Name, 
       GROUP_CONCAT(r.name) AS Role
  FROM usr u LEFT JOIN usr_role ur
    ON u.uid = ur.uid LEFT JOIN role r
    ON ur.rid = r.rid
 GROUP BY u.uid, u.username, u.firstname

这里是SQLFiddle

样本输出:

|用户名 |用户名 |姓名 |角色 | |--------|----------|------------|-------------| | 1 |约翰 |约翰 |角色1,角色3 | | 2 |简 |简 |角色2 |

【讨论】:

    猜你喜欢
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多