私は2つのテーブルを持っています
node
-------------
id
name
edge
--------------
source_node_id
target_node_id
クエリによる接続もあります
SELECT level,lpad(' ',4*(level)) || tn.name
FROM Node sn, Node tn, Edge e
where e.source_node_id = sn.id
and e.target_node_id = tn.id
start with e.source_node_id in (0)
connect by prior e.target_node_id = e.source_node_id
union
select 0, name
from Node n
where id in (0)
これにより、次のような出力が正しく得られます。
0 node1
1 node2
2 node3
2 node4
ここまでは順調ですね。今、私は各リーフノードの完全な階層を表示する必要があります-必要に応じて上位ノードを繰り返します...次のようなもの:
0 node1
1 node2
2 node3
0 node1
1 node2
2 node4
おそらくsys_connect_by_pathだと思いますが、よくわかりません。この種の出力の最適な生成について何か考えはありますか?