mysql - SQL JOIN 多个多对多表

标签 mysql sql

使用 MySql,我想通过给定的用户 ID 连接多个多对多表(users_roles 和 Roles_permissions)。 但是我的查询有问题,因为它给出了如下错误。

#1054 - Unknown column 'users_roles.role_id' in 'on clause'

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 

关于mysql - SQL JOIN 多个多对多表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39557349/

相关文章:

sql - 如何在 Liquibase 中实现 SQL 语句(插入多行)

sql - 在单个查询中从多个表中查找数据

mysql - 从表中的所有列中选择所有非空值

mysqli_stmt::bind_param():变量数量与 mysql php 中准备好的语句中的参数数量不匹配

SQL 服务器 : how transactions work

mysql - 奇怪的 MySQL 行为。有些行在排序后出现但在执行后不出现

php - 获取数据库表后,现在我必须在 codeigniter 中编辑它

php - php/MySQL 中的排序和分组

mysql - 包含(Oracle)与匹配(MySql)

php - 按时间戳选择 block 顺序并按 id 随机化