如何根据与另一个表的关系从mysql表中获取结果

时间:2017-09-18 00:24:57

标签: mysql sql

在这种情况下,我需要使用两个表: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脚本的问题。感谢您的帮助!

1 个答案:

答案 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%'