それ自体でテーブルを完全に結合できます。
ただし、設計では複数レベルの階層を持つことができることに注意してください。 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
プレ>