在这种情况下,我需要使用两个表:members和rank_permissions。我想获得一份管理员列表。 admin是权限表中包含动作列“access_admin”的行的任何成员。可能有多个排名包含包含该权限的行。我如何从members表中获取行,其中rank_id在权限表中有一行,其行为为“access_admin”?
这些是我的表格:
Members: member_id, rank_id
rank_permissions: rank_id, action
以下是我的尝试:
SELECT m.member_id, m.rank_id, p.rank_id, p.action
FROM members as m
LEFT JOIN rank_permissions as p ON m.rank_id = p.rank_id
WHERE p.action = "access_admin"
这当前返回0行,即使有一个成员的rank_id为1并且权限表中有一行,其rank_id为1,操作为“access_admin”。我做错了什么?
所以我的数据是正确的,查询是正确的。它最终成为我的PHP脚本的问题。感谢您的帮助!
答案 0 :(得分:0)
也许access_permission
部分中有无法识别的字符。试试这个版本:
SELECT m.member_id, m.rank_id, p.rank_id, p.action
FROM members m INNER JOIN
rank_permissions p
ON m.rank_id = p.rank_id
WHERE p.action LIKE '%access_admin%'