Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Присъединете маса към себе си

Можете перфектно да съедините масата с него.

Трябва да сте наясно обаче, че вашият дизайн ви позволява да имате множество нива на йерархия. Тъй като използвате 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкнете ръчно в таблица чрез SQL оператор, но ключът се увеличава автоматично

  2. Как мога да ИЗБЕРЕМ множество колони в рамките на CASE WHEN на SQL Server?

  3. Клауза INNER JOIN Where

  4. Преобразуване на дата и култура:Разлика между DATE и DATETIME

  5. Планирана поддръжка на 24/7 IS база данни в MS SQL Server