Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dołącz do siebie przy stole

Możesz z nim idealnie dołączyć do stołu.

Należy jednak pamiętać, że projekt pozwala na stosowanie wielu poziomów hierarchii. Ponieważ używasz SQL Server (zakładając 2005 lub nowszy), możesz mieć rekurencyjne CTE, aby uzyskać strukturę drzewa.

Przygotowanie dowodu koncepcji:

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

Zapytanie 1 - Poziomy węzłów:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Projekt bazy danych dla ustawień użytkownika

  2. Prosty sposób na transponowanie kolumn i wierszy w SQL?

  3. Logowanie nie powiodło się. Login pochodzi z niezaufanej domeny i nie może być używany z uwierzytelnianiem Windows

  4. Klawisz skrótu do modyfikacji procedury składowanej w ssms

  5. Unikalna kolumna SQL Server 2008 uwzględniająca wielkość liter