【发布时间】:2014-07-03 11:08:15
【问题描述】:
我有 5 张桌子:
user ( user id, user name, etc.. )
role ( role_id, role_name )
user_role ( user_id, roles_id )
form ( form_id, form_name, etc.. )
form_access ( form_id, role_id )
-
user包含所有注册的用户数据。 -
role包含所有不同类型的角色。 -
user_role包含哪个用户具有哪个角色(存储所有分配的角色) -
form包含所有表单数据。 -
form_access包含诸如哪个用户角色具有哪个表单访问权限之类的数据(一个表单可以分配给多个用户角色)。
我想用 PHP 编写一个 SQL 查询来根据登录的用户和他的角色来检索表单名称,例如如果管理员登录他应该得到所有的表格,如果 HR 登录他应该只得到与 HR 相关的表格。
我试过这个查询:
$query = "SELECT ur.role_id, f.form_name, f.form_desc
FROM user_role ur, froms f
WHERE users.id = '".$user."',
users.status ='A',
forms.form_id = form_access.form_id,
from_access.role_id = user_role.role_id,
user_role.role_id = '".$user."'";`
有人帮我解答正确的问题吗?
【问题讨论】:
-
1.那么有什么问题呢? 2. 你拼错了一个表名“froms”。 3. 您获得了表别名但没有使用它们, 4. FROM 子句中仅有的 2 个表是 user_role 和 forms(/froms) 但您随后在 WHERE 子句中使用了 form_access (+ from_access) 和 users。
-
这是编辑过的一个@OGHaza 但它不起作用
$qury = "SELECT ur.role_id, f.form_name, f.form_desc FROM user_role ur, froms f, users u, form_access fa WHERE users.id = '".$user."', u.status ='A', f.form_id = fa.form_id, fa.role_id = ur.role_id, ur.role_id = '".$user."'";