Nun, Ihr Problem scheint zu sein, dass Sie ein nicht normalisiertes Tabellendesign verwenden. Wenn eine gegebene ID
hat immer dieselbe ParentID
, diese Beziehung sollte nicht in all diesen Zeilen separat angegeben werden.
Ein besseres Design wäre eine einzelne Tabelle, die die Eltern-Kind-Beziehungen mit ID
zeigt als Primärschlüssel und eine zweite Tabelle, die die Zuordnungen von ID
zeigt zu ObjectID
, wobei ich annehme, dass beide Spalten zusammen den Primärschlüssel umfassen würden. Dann würden Sie Ihre hierarchische Abfrage auf die erste Tabelle anwenden und die Ergebnisse davon mit der anderen Tabelle verknüpfen, um die relevanten Objekte für jede Zeile zu erhalten.
Sie können dies mit Ihrer aktuellen Tabellenstruktur nachbilden ...
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)