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)