Let's say I have something similar to this (hierarchy of folders on drive C:).
I want to get top folder of a given folder (in this case I chose '1'
), not the disc itself, how do I do this?
Hierarchy can have various levels.
with data as
(
select '1' name, 'folder' type, 'docs' parent from dual union
select '2' name, 'folder' type, 'docs' parent from dual union
select '3' name, 'folder' type, 'docs' parent from dual union
select 'docs' name, 'folder' type, 'MyFolder' parent from dual union
select 'MyFolder' name, 'folder' type, 'C:\' parent from dual union
select 'C:\' name, 'Drive' type, null parent from dual
)
select name, level from data
start with name = '1'
connect by prior parent = name
order by level;
expected output: 'Myfolder'
, as it doesn't have any other folder as parent.