sql >> Database >  >> RDS >> Oracle

oracle connect door meerdere ouders

Welnu, uw probleem lijkt te zijn dat u een niet-genormaliseerd tafelontwerp gebruikt. Als een gegeven ID heeft altijd dezelfde ParentID , moet die relatie niet apart in al deze rijen worden aangegeven.

Een beter ontwerp zou zijn om een ​​enkele tabel te hebben met de ouder-kindrelaties, met ID als primaire sleutel, en een tweede tabel met de toewijzingen van ID naar ObjectID , waarbij ik veronderstel dat beide kolommen samen de primaire sleutel zouden vormen. Vervolgens zou u uw hiërarchische zoekopdracht toepassen op de eerste tabel en de resultaten daarvan koppelen aan de andere tabel om de relevante objecten voor elke rij te krijgen.

U kunt dit emuleren met uw huidige tabelstructuur ...

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)


  1. Fout 1215:Kan beperking voor refererende sleutels niet toevoegen

  2. mysql-query om veld bij te werken naar max (veld) + 1

  3. Tijdelijke tabellen maken in SQL Server via MS Access

  4. Oracle Big Data SQL