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)