我想要加入一个表格,其中包含群组之间的n:m关系(群组在另一个表格中定义)。
这个表格只有列出成员群组ID和父群组ID的条目。
给定这个结构:
“基本”查询看起来像这样:
“基础”查询正确显示了所有关系(我通过手动检查了)。问题出现在我尝试对这个查询应用where子句来过滤一个特定组作为“起点”(我想要其所有父组)时,它只返回最近的父组。例如像这样:
有人能给我提示如何修复这个问题吗?或者有不同的方法来实现这个问题。 (我想我总是可以在服务器端的C ++源代码中完成此操作,但我必须传输一个具有高增长潜力的完整表格到应用服务器。)
更新:
打字错误已确认。现在我无法通过继承期的第一级。感谢您指出这一点。
更新2:预期结果
预期结果:
给定这个结构:
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
打字错误已确认。现在我无法通过继承期的第一级。感谢您指出这一点。
更新2:预期结果
id | group_id | member_group_id
--------------------------------
1 | 1 | 2
2 | 2 | 3
3 | 3 | 4
4 | 4 | 5
5 | 5 | 6
6 | 6 | 7
预期结果:
ids
2
3
4
5
6
7