SQL

T-SQL TreePath Oluşturma

Tabloda hiyerarşik olarak birbirinie bağlı kayıtları tutan bir veri örneği bulunmaktadır. Hiyerarşi kavramı bize, verinin bütününün bir ağaç yapısı (tree) olduğunu bildirir. 

Bu örnegimizde herhangi bir satirin adini üst seviyedeki satirlarin adlari ile birlestirerek gösterecegiz. Yani ağacın dallarını birleştireceğiz. 

Örnegin

  • Id si 4 olan satir için ; “Parent 1 -> Child 1.1 -> Child 1.1.1” degerini,
  • Id si 2 olan satir için ; “Parent 1 -> Child 1.1” degerini
  • Id si 1 olan satir için ; “Parent 1” degerini

elde etmeliyiz.

Bunun için asagidaki SQL Scripti kullanabiliriz.

WITH p AS
(
SELECT Id,ParentId,Ad,cast(Ad as varchar(max)) as treepath
FROM ParentChild WHERE parentID is null
UNION ALL
SELECT c.Id,c.ParentId,c.Ad,cast(p.treepath +'->'+cast(c.Ad as varchar(max)) as varchar(max)) as nihaipath
FROM ParentChild c JOIN p ON p.Id = c.ParentId
)
SELECT * FROM p

Sonuç

Leave a Comment