Oracle
 sql >> Database >  >> RDS >> Oracle

Oracle Connect da più genitori

Bene, il tuo problema sembra essere che stai usando un design della tabella non normalizzato. Se un determinato ID ha sempre lo stesso ParentID , tale relazione non deve essere indicata separatamente in tutte queste righe.

Un design migliore sarebbe quello di avere una singola tabella che mostra le relazioni padre figlio, con ID come chiave primaria e una seconda tabella che mostra le mappature di ID a ObjectID , dove presumo che entrambe le colonne insieme comprendano la chiave primaria. Quindi applicheresti la tua query gerarchica alla prima tabella e unire i risultati di quella all'altra tabella per ottenere gli oggetti rilevanti per ogni riga.

Puoi emularlo con la struttura della tua tabella attuale...

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)