【发布时间】:2014-11-28 21:52:50
【问题描述】:
我有一个名为“test”的表。它包含父列和子列。
Parent Child
1 101
1 102
1 103
101 121
101 123
103 133
121 80
121 81
现在,我编写了一个查询,它为给定的“1”值带来了所有孩子/父母。
( SELECT parent,child,LEVEL FROM TEST
START WITH child= 1
CONNECT BY PRIOR parent=child)
UNION ALL
(SELECT parent,child,LEVEL FROM TEST
START WITH parent=1
CONNECT BY PRIOR child=parent)
ORDER BY parent
但我想要该层次结构中的所有子/父,而不管给定的任何值..即如果我给“80”....,我必须获取最高父值(在本例中为“1”),然后搜索下面那个最高父值的所有子值。
【问题讨论】:
-
我很难理解您的需求。您是否在寻找“所有孩子都有共同的祖先”?
-
是什么让
1成为80的“最高父值”?是不是因为它实际上是升序列表中的最小值? -
@Caffé 据我了解,
1是80的终极祖先:80 => 121 => 101 => 1。但不清楚之后应该做什么。找到1的所有后代?还是只有它的“直接”孩子? -
是的,1.... 的所有后代 ..首先要找到 1,然后得到 1 的所有子代,即 1 --> 101, 102,103,然后是 101 -> 121,123和 103-->133 和 121-->80,81。不确定,如果这可能......如果给定任何与之关联的值,则获取整个层次结构。
标签: sql oracle recursion parent-child highest