Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

oracle conectar por vários pais


Bem, seu problema parece ser que você está usando um design de tabela não normalizado. Se um determinado ID sempre tem o mesmo ParentID , esse relacionamento não deve ser indicado separadamente em todas essas linhas.

Um design melhor seria ter uma única tabela mostrando os relacionamentos pai-filho, com ID como chave primária e uma segunda tabela mostrando os mapeamentos de ID para ObjectID , onde presumo que ambas as colunas juntas comporiam a chave primária. Em seguida, você aplicaria sua consulta hierárquica na primeira tabela e juntaria os resultados dela à outra tabela para obter os objetos relevantes para cada linha.

Você pode emular isso com sua estrutura de tabela atual ...
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)