Bueno, su problema parece ser que está utilizando un diseño de tabla no normalizado. Si un ID
dado siempre tiene el mismo ParentID
, esa relación no debe indicarse por separado en todas estas filas.
Un mejor diseño sería tener una sola tabla que muestre las relaciones padre-hijo, con ID
como clave principal y una segunda tabla que muestra las asignaciones de ID
a ObjectID
, donde supongo que ambas columnas juntas comprenderían la clave principal. Luego, aplicaría su consulta jerárquica en la primera tabla y uniría los resultados de eso a la otra tabla para obtener los objetos relevantes para cada fila.
Puede emular esto con su estructura de tabla actual...
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)