Вы можете отлично присоединиться к столу самостоятельно.
Вы должны знать, однако, что ваш дизайн позволяет вам иметь несколько уровней иерархии.Поскольку вы используете SQL Server (предположительно 2005 или выше), вы можете иметь рекурсивное CTE для получения вашей древовидной структуры.
Подтверждение подготовки концепции:
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');
Запрос 1 - Уровни узла:
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