Twój problem wydaje się polegać na tym, że używasz nieznormalizowanego projektu tabeli. Jeśli podany ID
zawsze ma ten sam ParentID
, ta relacja nie powinna być wskazywana osobno we wszystkich tych wierszach.
Lepszym projektem byłoby posiadanie pojedynczej tabeli pokazującej relacje rodzic-dziecko, z ID
jako klucz podstawowy, a druga tabela pokazująca mapowania ID
na ObjectID
, gdzie zakładam, że obie kolumny razem stanowią klucz podstawowy. Następnie zastosujesz swoje hierarchiczne zapytanie do pierwszej tabeli i połączysz wyniki tego z drugą tabelą, aby uzyskać odpowiednie obiekty dla każdego wiersza.
Możesz to emulować z obecną strukturą tabeli ...
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)