分层查询 - 捕获路径的各个部分

时间:2012-05-10 20:48:13

标签: sql oracle hierarchical-query

我在Oracle 11g中有一个分层查询,它从我的树中获取了所有叶子节点,并且它工作得很好。但是,当我遍历到我的叶节点时,我需要尝试分别捕获路径的每个部分。有办法做到这一点吗?要么修改我的查询还是第二次查询?

非常感谢任何帮助!

这是我的问题:

select c.id, 
   c.superid,
   c.name,
   SYS_CONNECT_BY_PATH(c.name, '>>') as PathName
from mytable c
where c.activestatus =0 AND
  c.id NOT IN(select distinct c2.superid from categorizations c2 where c2.superid IS NOT NULL)
start with c.superid IS NULL
connect by prior c.id = c.superid;

所以目前我得到的输出如下: id,superid,name1,>> name1>> name2>> name3>> name

哪个好。但我试图以某种方式捕获每个节点名称(因为我需要以XML格式输出它)。

现在我的每个叶子节点的XML看起来像

<Node1>
  <Project>name</Project>
  <PathName>>name1>>name2>>name3>>name</PathName>
</Node1>.  

我想以某种方式获得看起来像

的XML
<Node1>
 <Project>name1
   <Project>name2
      <Project>name3
         <Project>name</Project>
      </Project>
   </Project>
</Project>
<PathName>>name1>>name2>>name3>>name</PathName>
</Node1>

....或类似的东西,基本上我希望能够将我的树层次结构输出到XML。

1 个答案:

答案 0 :(得分:0)

您可以使用<project>代替>>添加其他代码,然后使用level伪列在每个级别附加一个</project>