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

Permintaan untuk Hubungan Orang Tua Anak ke tingkat atas

Karena Permission is NOT NULL harus dalam hierarki, maka baris ini menjadi simpul akar untuk kasus ini. Saya telah memberi label ini RootID di sini

Juga menambahkan lebih banyak data sampel untuk menampilkan beberapa cabang dari ParentID = 0 yang sama akar

DECLARE @t TABLE (NodeId int, NodeName varchar(100), ParentId int, Permission int)
INSERT @t VALUES 
(1,'Node1',0,NULL),
(2,'Node2',1,1),
(3,'Node3',1,NULL),
(4,'Node4',1,NULL),
(5,'Node5',2,NULL),
(6,'Node6',5,NULL),
(7,'Node7',2,NULL),
(8,'Node1',0,NULL),
(9,'Node9',8,2),
(10,'Node10',9,NULL),
(11,'Node11',10,NULL),
(12,'Node12',11,NULL),
(13,'Node13',10,NULL),
(14,'Node14',9,NULL);

WITH CTE AS
(
    SELECT NodeId, NodeName, ParentId AS RootID FROM @t WHERE Permission IS NOT NULL
    UNION ALL
    SELECT T.NodeId, T.NodeName, CTE.RootID
    FROM @t T JOIN CTE ON T.ParentId = CTE.NodeId
)
SELECT
    *
FROM
    CTE
WHERE
    NodeName IN ('Node6', 'Node13');



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengoptimalkan kueri SQL dengan menghapus operator Sortir dalam paket Eksekusi

  2. Buat Fungsi T-SQL dengan parameter tabel

  3. Saya tidak dapat memulai browser SQL Server

  4. Nama instance default dari SQL Server Express

  5. Mendapatkan nomor minggu dari tanggal di MS SQL Server 2005?