如何在映射表中显示用户的名称而不是他的ID?

时间:2017-02-24 14:14:12

标签: mysql sql database select rdbms

我的MySQL数据库中有一个用户角色多对多关系。因此,我有一个映射表连接两个表的ID。 映射表看起来像这样:

ID of User | ID of Role
---------- | ----------
1          | 1
1          | 2
2          | 1
2          | 3

用户表

Firstname of User | ID of User
----------------- | ----------
ExampleUser1      | 1
ExampleUser2      | 2

角色的表

Name of Role      | ID of Role
----------------- | ----------------
ExampleRole1      | 1
ExampleRole2      | 2
ExampleRole3      | 3

我希望我的映射表看起来像这样:

Firstname of User | Name of Role
----------------- | ------------
ExampleUser1      | ExampleRole1
ExampleUser1      | ExampleRole2
ExampleUser2      | ExampleRole1
ExampleUser2      | ExampleRole3

实现这个的SQL-Query是什么?

2 个答案:

答案 0 :(得分:2)

您需要连接所有三个表,并使用映射表将ID替换为名称:

SELECT u.name, r.name
FROM   user u
JOIN   user_role ur ON u.id = ur.user_id
JOIN   role r ON r.id = ur.role_id

答案 1 :(得分:2)

您可以使用连接

来实现此目的
select user.user_name, roles.role_name from mapping_table 
inner join user on user.id = mapping_table.user_id
inner join roles on role.id = mapping_table.role.id