Е, проблемът ви изглежда е, че използвате ненормализиран дизайн на таблица. Ако даден ID
винаги има един и същ ParentID
, тази връзка не трябва да се посочва отделно във всички тези редове.
По-добър дизайн би бил да има една таблица, показваща връзките родител-дете, с ID
като първичен ключ и втора таблица, показваща съпоставянията на ID
към ObjectID
, където предполагам, че двете колони заедно ще съставят първичния ключ. След това ще приложите вашата йерархична заявка към първата таблица и ще обедините резултатите от нея към другата таблица, за да получите съответните обекти за всеки ред.
Можете да емулирате това с текущата си структура на таблицата ...
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)