oracle双向分层查询

时间:2012-08-01 14:00:32

标签: sql database oracle

我对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步时,它不会搜索那些单位子单元,而只是搜索父项。所以基本上我,如果父单位有另一个孩子(不是我们正在寻找的那个)我将无法达到它,因为语法只保留寻找父母。后来它只适合儿童而不是这两种儿童。

对于每个孩子或父母单位,我是否可以搜索父母和孩子?

1 个答案:

答案 0 :(得分:0)

我不确定您是否可以使用单个查询来执行此操作。
但您可以分两步轻松完成:

  1. 找到你单位的老祖先A(没有父母的人)
  2. 找到A的所有孩子