sql >> Databasteknik >  >> RDS >> Sqlserver

Gå med i ett bord för sig själv

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


  1. Är ora_hash deterministiskt?

  2. Sätt upp en stor databas i MySQL för analys i R

  3. MySQL Få en lista över datum i månad, år

  4. Kopiera/duplicera databas utan att använda mysqldump