Tja, ditt problem verkar vara att du använder en icke-normaliserad tabelldesign. Om ett givet ID
har alltid samma ParentID
, det förhållandet bör inte anges separat i alla dessa rader.
En bättre design skulle vara att ha en enda tabell som visar de överordnade underordnade relationerna, med ID
som en primärnyckel och en andra tabell som visar mappningarna av ID
till ObjectID
, där jag antar att båda kolumnerna tillsammans skulle utgöra primärnyckeln. Sedan skulle du tillämpa din hierarkiska fråga mot den första tabellen och sammanfoga resultaten av den till den andra tabellen för att få de relevanta objekten för varje rad.
Du kan emulera detta med din nuvarande tabellstruktur ...
with parent_child as (select distinct id, parent_id from table),
tree as (select id, parent_id from parent_child
start with parent_id = 0
connect by prior id = parent_id )
select id, table.parent_id, table.object_id
from tree join table using (id)