Du kan perfekt gå med i bordet med sig själv.
Du bör dock vara medveten om att din design tillåter dig att ha flera nivåer av hierarki. Eftersom du använder SQL Server (förutsatt 2005 eller högre), kan du få en rekursiv CTE att få din trädstruktur.
Bevis på konceptförberedelse:
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');
Fråga 1 - Nodnivåer:
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