Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bergabunglah dengan tabel untuk dirinya sendiri

Anda dapat dengan sempurna bergabung dengan tabel itu sendiri.

Namun, Anda harus menyadari bahwa desain Anda memungkinkan Anda memiliki beberapa tingkat hierarki. Karena Anda menggunakan SQL Server (dengan asumsi 2005 atau lebih tinggi), Anda dapat meminta CTE rekursif untuk mendapatkan struktur pohon Anda.

Bukti persiapan konsep:

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

Kueri 1 - Level Node:

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. DECODE() fungsi di SQL Server

  2. SQL Server BCP mengekspor file yang rusak?

  3. SQL Server Express vs express localdb

  4. Pencarian CHARINDEX vs LIKE memberikan kinerja yang sangat berbeda, mengapa?

  5. Kembalikan Hak Istimewa Tabel dari Server Tertaut di SQL Server (Contoh T-SQL)