Подскажите, пожалуйста, как можно получить для любого дочернего элемента код (первичный ключ) его произвольного i-го родителя.
В частности, для получения кода корневого элемента, т.е. родителя 1-го уровня, использовал запрос, показанный ниже. Но мне интересно, можно ли решить задачу в общем случае? Подразумевается, что номер интересующего родителя-предка - некая константа, участвующая в запросе, сам алгоритм при этом универсален и не зависит от ее значения (решение для Oracle от 9 и выше).
select
t.id,
(
select
max(d.id) keep (dense_rank last order by level)
from mytable d
connect by d.id = prior d.parent_id
start with d.id = t.id
) first_parent_id
from (
select
t.id
from mytable t
connect by prior t.id = t.parent_id
start with t.parent_id is null
) t