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

Cara membuat SQL Server 2005 CTE untuk mengembalikan catatan orang tua-anak, untuk anak-anak dengan banyak orang tua

Ini tampaknya berfungsi dengan baik untuk saya, setelah saya memperbaiki kesalahan sintaks di CTE Anda:

create table #ParentChildTable 
(nodeID int not null
,parentNodeID int not null
)

insert #ParentChildTable 
select 900,56
union all select 900,123
union all select 123,439
union all select 56,439
union all select 439,0

;WITH Heirarchy
AS
(
    SELECT 
        T1.NodeID,
          T1.ParentNodeID
    FROM
        #ParentChildTable T1
    WHERE
        T1.NodeID = 439

    UNION ALL
    SELECT 
        T1.NodeID,
        T1.ParentNodeID
    FROM
        #ParentChildTable T1
        INNER JOIN Heirarchy TH ON TH.NodeID = T1.ParentNodeID
)
select *
from Heirarchy

Mengembalikan hasil:

NodeID      ParentNodeID
----------- ------------
439         0
123         439
56          439
900         56
900         123


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Parsing string JSON dalam sql

  2. Tipe Data Teks SQL Server Maxlength =65.535?

  3. bagaimana membuat isi tabel akan ditampilkan secara otomatis dalam bentuk pop up

  4. Cara membagi string setelah karakter tertentu di SQL Server dan memperbarui nilai ini ke kolom tertentu

  5. Login ASP.NET gagal untuk pengguna 'NT AUTHORITY\NETWORK SERVICE'