MS Access 多个内连接
Posted
技术标签:
【中文标题】MS Access 多个内连接【英文标题】:MS Access Multiple Inner Joins 【发布时间】:2018-05-24 02:15:49 【问题描述】:我有这个 sql 查询
SELECT e.permission_name
FROM ((((users_roles a
INNER JOIN users b
ON a.user_id = b.id)
INNER JOIN roles c
ON a.role_id = c.id)
INNER JOIN roles_permissions d
ON c.id = d.role_id)
INNER JOIN permissions e
ON d.permission_id = e.id)
WHERE b.id = :id
我已经添加了括号,因为 MS Access 需要它,但它不起作用。
我在 php 中使用 MS Access
【问题讨论】:
究竟是什么不工作? 去掉 () 的 let access 将它们添加回来。 【参考方案1】:我认为您不需要加括号,这可能会给您带来语法错误。去掉大括号就行了
SELECT e.permission_name
FROM users_roles a
INNER JOIN users b ON a.user_id = b.id
INNER JOIN roles c ON a.role_id = c.id
INNER JOIN roles_permissions d N c.id = d.role_id
INNER JOIN permissions e ON d.permission_id = e.id
WHERE b.id = :id
【讨论】:
【参考方案2】:我建议这样编写查询:
SELECT p.permission_name
FROM (((users_roles as ur INNER JOIN
users as u
ON ur.user_id = u.id
) INNER JOIN
roles as r
ON ur.role_id = r.id
) INNER JOIN
roles_permissions as rp
ON r.id = rp.role_id
) INNER JOIN
permissions as p
ON rp.permission_id = p.id
WHERE u.id = :id;
与您的版本唯一真正的区别是表别名使用as
。
【讨论】:
以上是关于MS Access 多个内连接的主要内容,如果未能解决你的问题,请参考以下文章