sql >> Databáze >  >> RDS >> Sqlserver

Připojte stůl k sobě

Stůl s ním dokonale spojíte sami.

Měli byste si však uvědomit, že váš návrh vám umožňuje mít více úrovní hierarchie. Protože používáte SQL Server (za předpokladu 2005 nebo vyšší), můžete mít rekurzivní CTE získat svou stromovou strukturu.

Doklad o přípravě konceptu:

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

Dotaz 1 – Úrovně uzlů:

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. Nejrychlejší způsob vložení objektu, pokud neexistuje s SQLAlchemy

  2. jakou databázi použít pro samostatnou aplikaci Winforms

  3. Aktualizujte počet předchozích dnů pomocí funkce LAG v ORACLE

  4. Bezpečnostní úvahy pro nasazení MariaDB v prostředí hybridního cloudu