2つの列を持つ単純な親/子タイプのビューがあります:MYID
とMYPARENTID
。PL / SQLでは、親のすべての子のリストを取得するのは非常に簡単です。
SELECT MYID
FROM MYVIEW
START WITH MYID = 'TargetId1'
CONNECT BY PRIOR MYID = MYPARENTID
そして、私はこのようなものを取り戻すでしょう:
MYID
-----------
TargetId1
TargetId1Child1
TargetId1Grandchild1
しかし、今度は、これを一連の親に対して一度に実行したいとします。
SELECT MYID
FROM MYVIEW
START WITH MYID IN ('TargetId1', 'TargetId2', 'TargetId3')
CONNECT BY PRIOR MYID = MYPARENTID
私の結果は次のようになります。
MYID
---------
TargetId1
TargetId1Child1
TargetId1Grandchild1
TargetId2
TargetId2Child2
TargetId2Grandchild1
TargetId3
TargetId3Child3
TargetId3Grandchild1
このようにすると、特定の子ノードがどこから来たのかを知ることができなくなります。START WITH
子のリストを取得しますが、各子がどのルート(基本的には値)から発生したのかを知りたいです。
次のような結果セットが必要です。
MYID ROOT
----------------------------------
TargetId1 TargetId1
TargetId1Child1 TargetId1
TargetId1Grandchild1 TargetId1
TargetId2 TargetId2
TargetId2Child2 TargetId2
TargetId2Grandchild2 TargetId2
TargetId3 TargetId3
TargetId3Child3 TargetId3
TargetId3Grandchild3 TargetId3
これどうやってするの?