@pepeh

Как составить Mysql Запрос?

Здравстуйте! У меня есть таблицы:

18dff202b7a44dc9938008c096a462db.pngf454b38c05434a26bb241df267fcd419.png2bc674fa044f440f944e57bd08039eff.png01f240e6fe184804a2e5ae9fc83e190f.pngd4372fb457b8496a8daf6be90da23a1e.png

Как мне составить запрос, чтобы выбрать пользователя если у него есть определенная роль.

"SELECT name FROM users WHERE users.name = 'Ivan' AND permissions.name= 'auth-site'"


Дополнено:

Я написал запрос который делает правильно выборку, можно как то сделать по-другому?

SELECT users.name FROM users
			LEFT JOIN user_roles ON user_roles.user_fk = users.user_id
			LEFT JOIN role_permissions ON user_roles.role_fk = role_permissions.permission_fk, permissions
			WHERE users.name='Ivan' AND permissions.name= 'auth-site'
  • Вопрос задан
  • 2370 просмотров
Решения вопроса 1
@pepeh Автор вопроса
SELECT users.name, permissions.name perm from users
                        inner join user_roles
                 on users.user_id=user_roles.user_fk
                        inner join roles
                         on roles.role_id=user_roles.role_fk
                                inner join role_permissions
                                 on roles.role_id=role_permissions.role_fk
                                        inner join permissions
                                         on permissions.permission_id=role_permissions.permission_fk
                                 having users.name='Ivan' and perm='auth-site'
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@pihel
Sql, Oracle, pl/sql, BI, ETL, php, olap
Я бы сделал примерно так:
SELECT 
  users.name 
FROM users
INNER JOIN user_roles 
  ON user_roles.user_fk = users.user_id
INNER JOIN role_permissions 
  ON user_roles.role_fk = role_permissions.permission_fk
INNER JOIN permissions 
  ON user_roles.role_permission_id = permissions.id
WHERE 
  users.name='Ivan' AND permissions.name= 'auth-site'
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы