Oracle
 sql >> Base de données >  >> RDS >> Oracle

oracle se connecter par plusieurs parents

Eh bien, votre problème semble être que vous utilisez une conception de table non normalisée. Si un ID donné a toujours le même ParentID , cette relation ne doit pas être indiquée séparément dans toutes ces lignes.

Une meilleure conception serait d'avoir une seule table montrant les relations parent-enfant, avec ID comme clé primaire, et un deuxième tableau montrant les mappages de ID à ObjectID , où je suppose que les deux colonnes ensemble comprendraient la clé primaire. Ensuite, vous appliqueriez votre requête hiérarchique à la première table et joindrez les résultats de celle-ci à l'autre table pour obtenir les objets pertinents pour chaque ligne.

Vous pouvez émuler cela avec votre structure de table actuelle ...

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)