У меня есть простое представление типа «родитель / потомок» с двумя столбцами: 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
Как я могу это сделать?