Nå, dit problem ser ud til at være, at du bruger et ikke-normaliseret tabeldesign. Hvis et givet ID
har altid det samme ParentID
, skal denne relation ikke angives separat i alle disse rækker.
Et bedre design ville være at have en enkelt tabel, der viser de overordnede underordnede relationer, med ID
som en primær nøgle og en anden tabel, der viser tilknytningerne af ID
til ObjectID
, hvor jeg antager, at begge kolonner tilsammen ville udgøre den primære nøgle. Derefter vil du anvende din hierarkiske forespørgsel mod den første tabel og forbinde resultaterne af den med den anden tabel for at få de relevante objekter for hver række.
Du kan efterligne dette med din nuværende tabelstruktur ...
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)