sql >> Base de Datos >  >> RDS >> Oracle

conexión de Oracle por padres múltiples

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)