Zdá se, že váš problém spočívá v tom, že používáte nenormalizovaný návrh tabulky. Pokud je dané ID
má vždy stejné ParentID
, tento vztah by neměl být uveden samostatně ve všech těchto řádcích.
Lepším návrhem by bylo mít jedinou tabulku zobrazující vztahy nadřazeného potomka s ID
jako primární klíč a druhou tabulku zobrazující mapování ID
na ObjectID
, kde předpokládám, že oba sloupce dohromady budou obsahovat primární klíč. Potom byste použili svůj hierarchický dotaz na první tabulku a spojili výsledky této tabulky s druhou tabulkou, abyste získali relevantní objekty pro každý řádek.
Můžete to emulovat s vaší aktuální strukturou tabulky ...
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)