我有 4 个表格(还有很多其他表格 - 仅显示相关的表格)。他们是:
- “用户”
- ID
- 姓名
- role_id
- “角色”
- ID
- 姓名
- “chapter_role_view_permissions”
- ID
- chapter_id
- role_id
- “章节”
- ID
- 姓名
我正在尝试构建一个查询,该查询将返回所有用户的列表、他们的角色名称、每个用户的所有章节以及他们是否有权查看每个章节。假设有 2 个用户和 2 个章节。用户 1 的 role_id=1,用户 2 的 role_id=2。 Chapter_role_view_permissions 有 1 条记录( id:1 | Chapter_id: 1 | role_id: 1 ),这意味着只有 role_id=1 的用户才能查看第 1 章。
我正在寻找的查询结果应该是这样的:
|---users.id---|--roles.id---|---chapters.id--|-can_view_chapter-|
|------ 1 ------|----- 1 --------|-------- 1 --------|- ---------- 1 -----------|
|------ 1 ------|----- 1 -------|-------- 2 --------|- ---------- 0 -----------|
|------ 2 ------|----- 2 -------|-------- 1 --------|- ---------- 0 -----------|
|------ 2 ------|----- 2 -------|-------- 2 --------|- ---------- 0 -----------|
知道查询是什么样子吗?我不想在 Chapter_role_view_permissions 中创建一个显示“允许”的新字段,并为每种角色类型插入 allowed=1 或 allowed=0 的新记录
最佳答案
SELECT users.name, roles.name, chapters.name
FROM users
LEFT OUTER JOIN roles ON users.role_id = roles.id
LEFT OUTER JOIN chapter_role_view_permissions link ON link.role_id = roles.id
LEFT OUTER JOIN chapters ON chapters.id = link.chapter_id
关于mysql - 带有连接的棘手 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13183371/