【发布时间】:2011-08-08 22:14:21
【问题描述】:
我有三个简单的表:基于多对多的组、权限和 group_permissions。 我的问题是在执行查询时,给定组 id (pk),将检索具有所有权限的结果集,包括与给定组关联的权限和与组无关的权限。
我尝试过类似的方法:
SELECT *
FROM permission
LEFT JOIN group_permissions ON group_permissions.permission_id = permission.id
LEFT JOIN group ON group_permissions.group_id = group.id
WHERE group.id = 123
但它只是不起作用......
有什么建议吗?
谢谢大家的回答,我在不到 30 分钟的时间内解决了我的问题!这不是什么东西吗?
SELECT *
FROM auth_permission
LEFT JOIN auth_group_permissions ON auth_group_permissions.permission_id = auth_permission.id AND auth_group_permissions.group_id = 123
LEFT JOIN auth_group ON auth_group.id = auth_group_permissions.group_id
【问题讨论】:
-
这是完整的查询吗?您提到的给定组 ID 的测试在哪里?
-
我忘了 :( 刚刚编辑过。tk
-
这就是我的怀疑,这就是我问这个问题的原因。正如我在下面对 Steve Mayne 的评论中提到的,您不能在 where 子句中检查该值,因为它否定了左连接。我已经发布了一个答案来解决这个问题。