【发布时间】:2012-04-01 16:33:43
【问题描述】:
我想加入一个包含组之间 n:m 关系的表。 (组在单独的表中定义)。 此表仅包含列出 member_group_id 和 parent_group_id 的条目。
鉴于此结构:
id(int) | member_group_id(int) | parent_group_id(int)
“基本”查询如下所示:
select p1.group_id, p2.group_id, p1.member_group_id, p2.member_group_id
from group_member_group as p1
join group_member_group as p2
on p2.member_group_id = p1.member_group_id
“基本”查询正确显示了所有关系(我通过手动进行检查。)
问题是,当我尝试将 where 子句应用于此查询以将特定组过滤为“原点”(我想要所有父组的第一个组)时,它只返回最近的父组。比如这样:
select p1.group_id, p2.group_id, p1.member_group_id, p2.member_group_id
from group_member_group as p1
join group_member_group as p2
on p2.member_group_id = p1.member_group_id
where p1.group_id = 1
谁能告诉我如何解决这个问题?或者用不同的方法来实现这一点。 (我想我总是可以在服务器端的 C++ 源代码中执行此操作,但我必须将具有高增长潜力的整个表传输到应用程序服务器。)
更新:
select p1.group_id, p2.group_id, p1.member_group_id, p2.member_group_id
from group_member_group as p1
join group_member_group as p2
on p2.group_id = p1.member_group_id
确认输入错误。现在我没有超过第一级继承期。感谢拒绝指出这一点。
UPDATE2:预期结果
id | group_id | member_group_id
--------------------------------
1 | 1 | 2
2 | 2 | 3
3 | 3 | 4
4 | 4 | 5
5 | 5 | 6
6 | 6 | 7
预期结果:
身份证
2
3
4
5
6
7
【问题讨论】:
-
您的预期结果是什么?请以表格格式给出一些示例
-
有关预期结果,请参见上面的 update2。基本上我想要给定表(在示例 1 中)直接或间接继承的所有表。
标签: mysql sql inheritance join nm