У меня есть база данных mySQL, в которой я пытаюсь вывести список пользователей и назначенных им административных ролей.Мои таблицы выглядят примерно так:
Users:
-------
- id
- fname
- lname
Role_Names
-----------
- rn_id
- role_name
Roles
---------
- role_id
- user_id
вот некоторые данные:
Users:
-------
1 'Chris' 'Christy'
2 'Brian' 'Bobson'
3 'Jen' 'Sanders'
Role_Names
--------------
1 'admin'
2 'exec'
3 'employee'
Roles
-----------
1 1
1 2
1 3
2 3
3 3
3 2
и для своего запроса я использую:
SELECT Users.fname, Role_Names.role_name from Users INNER JOIN
Roles on Users.id = Roles.user_id
INNER JOIN Role_Names
ON Roles.rn_id = Roles.role_id;
Это только кажетсявыводить роли для 1-го user_id
в таблице Roles
.И он выводит более 1 одной и той же записи.Например, мой вывод выглядит так:
first_name role_name
--------------------------------------
Chris exec
Chris exec
Chris exec
Chris employee
Chris employee
Chris employee
Chris admin
Chris admin
Chris admin
, тогда как я надеялся на что-то более похожее:
first_name role_name
--------------------------------------
Chris employee
Chris admin
Chris exec
Brian employee
Jen employee
Jen exec
...
В этот момент я не уверен, что это моя структура таблицы, котораянедостатки или если я использую соединения неправильно, или если это так плюс куча других вещей, о которых я даже не знаю.Может ли кто-нибудь помочь направить меня в правильном направлении?