Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle Connect durch mehrere Eltern

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)