Php MS访问多个内部联接
我有一个sql查询Php MS访问多个内部联接,php,sql,ms-access,Php,Sql,Ms Access,我有一个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)
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我认为不需要放括号,因为它可能会导致语法错误。只需拆下支架
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
我建议这样编写查询:
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;
与您的版本唯一的真正区别是将
用作表别名。到底是什么不起作用?删除(),让access重新添加它们。