Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Verbinden Sie eine Tabelle mit sich selbst

Sie können sich damit perfekt an den Tisch setzen.

Sie sollten sich jedoch bewusst sein, dass Ihr Design mehrere Hierarchieebenen zulässt. Da Sie SQL Server verwenden (vorausgesetzt 2005 oder höher), können Sie Ihre Baumstruktur mit einem rekursiven CTE abrufen.

Proof-of-Concept-Erstellung:

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');

Abfrage 1 – Knotenebenen:

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