[英]SQL JOIN multiple many-to-many tables
使用MySql,我想通过给定的用户ID联接多个多对多表(users_roles和Roles_permissions)。 但是我的查询有问题,因为它给出了如下错误。
#1054-'on子句'中的未知列'users_roles.role_id'
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
我认为您应该使用一组适当的联接
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
您可以使用以下查询,可以通过两种方式进行:
使用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是有效的方法。 希望你明白了。 任何帮助,请随时询问
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.