3

我有一个关于 oracle 分层查询的问题。

假设我有相互关联的单元的关系表,其中 unit1 是父单元,而 unit2 是子单元。

ID UNIT1 UNIT2 其他列

------大量数据--------

假设我正在查看一个单元,现在我想要关于它与其他单元的关系的完整图表/树。

很容易得到相互连接的父母和孩子:

 INSERT INTO search_table
 SELECT id
   FROM  mytable
  START  WITH unit_id1 = 12 (or any random unit id)
CONNECT BY nocycle PRIOR unit_id2 = unit_id1
  GROUP BY id;

这是向上移动,类似的是向下移动。现在发生的情况是,例如,当向上移动 1 步时,它不会搜索该单元的子单元,而只会继续搜索父单元。所以基本上我如果父母单位有另一个孩子(不是我们正在寻找的那个)我将无法到达它,因为语法一直只寻找父母。后来它只寻找孩子,而不是这两者的结合。

有没有办法为每个孩子或父母单位,我可以搜索父母和孩子?

4

1 回答 1

1

我不确定你可以用一个查询来做到这一点。
但是您可以分两步轻松完成:

  1. 找到你单位的老祖先A(没有父母的那个)
  2. 找到 A 的所有孩子
于 2012-12-15T07:44:11.727 回答