Mysql SQL连接多个多对多表

Mysql SQL连接多个多对多表,mysql,sql,Mysql,Sql,使用MySql,我希望通过给定的用户id连接多个多对多表(用户\角色和角色\权限)。 但是我的查询有点问题,因为它给出了如下错误 #1054-on子句中的未知列“users\u roles.role\u id” 我在PHPMyAdmin中的表结构如下: Table users_roles id | user_id | role_id Table roles_permissions id | role_id | permissions_id Table roles id | name | de

使用MySql,我希望通过给定的用户id连接多个多对多表(用户\角色和角色\权限)。 但是我的查询有点问题,因为它给出了如下错误

#1054-on子句中的未知列“users\u roles.role\u 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 

我认为你应该使用一套合适的连接

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 


您可以使用以下查询, 你可以用两种方法

使用连接

使用别名


但是使用连接是有效的方法。希望你收到了。任何帮助,请随时询问


您可以使用以下查询, 你可以用两种方法

使用连接

使用别名


但是使用连接是有效的方法。希望你收到了。如果有任何帮助,请随时询问

您不能混合使用旧的隐式连接语法和新的显式连接语法。您可以混合使用旧语法和新语法,但最好不要这样做(显式连接对可以在ON中使用哪些列的限制更大):
FROM users\u roles JOIN roles ON users\u roles.role\u id=roles.id JOIN roles\u permissions.role\u id=roles.id JOIN permissions ON roles\u permissions.id WHERE users\u roles.user\u id=1
你有我可以检查“新建”的链接吗带联接的语法样式?不能混合使用旧的隐式联接语法和新的显式联接语法。可以混合使用旧语法和新语法,但最好不要混合使用(显式联接对可以在ON中使用哪些列的限制更大):
FROM users\u roles JOIN roles ON users\u roles.role\u id=roles.id JOIN roles\u permissions.role\u id=roles.id JOIN permissions ON roles\u permissions.id WHERE users\u roles.user\u id=1
你有链接让我可以用连接检查“新”语法样式吗?
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;