Puoi unirti perfettamente al tavolo da solo.
Dovresti essere consapevole, tuttavia, che il tuo design ti consente di avere più livelli di gerarchia. Poiché stai utilizzando SQL Server (supponendo 2005 o versioni successive), puoi fare in modo che un CTE ricorsivo ottenga la tua struttura ad albero.
Preparazione della prova di concetto:
declare @YourTable table (id int, parentid int, title varchar(20))
insert into @YourTable values
(1,null, 'root'),
(2,1, 'something'),
(3,1, 'in the way'),
(4,1, 'she moves'),
(5,3, ''),
(6,null, 'I don''t know'),
(7,6, 'Stick around');
Query 1 - Livelli di nodo:
with cte as (
select Id, ParentId, Title, 1 level
from @YourTable where ParentId is null
union all
select yt.Id, yt.ParentId, yt.Title, cte.level + 1
from @YourTable yt inner join cte on cte.Id = yt.ParentId
)
select cte.*
from cte
order by level, id, Title