使用MySql,我想按给定的用户ID加入多个多对多表(users_roles和roles_permissions)。 但是我的查询有问题,因为它会产生如下错误。
#1054 - 未知栏' users_roles.role_id'在' on条款'
SELECT roles.name, permissions.name
FROM users_roles, roles_permissions
JOIN roles ON users_roles.role_id = roles.id
JOIN permissions ON roles_permissions.permission_id = permissions.id
WHERE users_roles.user_id = 1 AND roles_permissions.role_id = roles.id
我在PHPMyAdmin中的表结构如下:
Table users_roles
id | user_id | role_id
Table roles_permissions
id | role_id | permissions_id
Table roles
id | name | description
Table permissions
id | name | description
答案 0 :(得分:1)
我认为你应该使用一套正确的连接
SELECT roles.name, permissions.name
FROM users_roles
JOIN roles ON users_roles.role_id = roles.id
JOIN roles_permissions on roles_permissions.role_id = users_roles.role_id
JOIN permissions ON roles_permissions.permission_id = permissions.id
WHERE users_roles.user_id = 1
答案 1 :(得分:1)
您可以使用以下查询,
你可以用两种方式做到这一点,
使用JOINS
SELECT roles.name, permissions.name
FROM users_roles INNER JOIN roles_permissions
ON (users_roles.role_id = roles.id)
INNER JOIN permissions ON (roles_permissions.permission_id = permissions.id)
AND users_roles.user_id = 1
AND roles_permissions.role_id = roles.id;
使用别名
SELECT R.name, P.name from
users_roles UR, roles_permissions RP, permissions P, roles R
WHERE UR.role_id = R.id AND
RP.role_id = UR.role_id AND
RP.permission_id = P.id
UR.user_id = 1;
但使用JOINS是有效的方法。希望你明白了。任何帮助,随时问一下