J'ai une vue de type parent/enfant simple avec deux colonnes: MYID
et MYPARENTID
. En PL/SQL, obtenir une liste de tous les enfants d'un parent est assez simple:Récupérer des racines avec des nœuds dans une hiérarchie avec PL/SQL
SELECT MYID
FROM MYVIEW
START WITH MYID = 'TargetId1'
CONNECT BY PRIOR MYID = MYPARENTID
Et je recevrais quelque chose comme ceci:
MYID
-----------
TargetId1
TargetId1Child1
TargetId1Grandchild1
Mais maintenant, disons que je veux de faire cela pour un couple de parents, à la fois:
SELECT MYID
FROM MYVIEW
START WITH MYID IN ('TargetId1', 'TargetId2', 'TargetId3')
CONNECT BY PRIOR MYID = MYPARENTID
Mon résultat ressemble à ceci:
MYID
---------
TargetId1
TargetId1Child1
TargetId1Grandchild1
TargetId2
TargetId2Child2
TargetId2Grandchild1
TargetId3
TargetId3Child3
TargetId3Grandchild1
Lorsque je le fais de cette façon, je perds la capacité de savoir d'où vient un nœud enfant particulier. Je récupère une liste d'enfants, mais je veux savoir quelle racine (essentiellement, la valeur START WITH
) chaque enfant est originaire;
Je veux un jeu de résultats qui ressemble à ceci:
MYID ROOT
----------------------------------
TargetId1 TargetId1
TargetId1Child1 TargetId1
TargetId1Grandchild1 TargetId1
TargetId2 TargetId2
TargetId2Child2 TargetId2
TargetId2Grandchild2 TargetId2
TargetId3 TargetId3
TargetId3Child3 TargetId3
TargetId3Grandchild3 TargetId3
Comment puis-je faire cela?
Excellent! Merci beaucoup. – DivisionByZorro