Aile ağacı örneği
Kaynak : http://www.sqlservercurry.com/2009/06/simple-family-tree-query-using.html
Bu örnekte hem sql serverda recursive fonksiyon kullanımını gösteriyor ,hemde binary tree yapısında bir database iniz varsa bunun database seviyesinde nasıl işleneceğinizi gösteriyor.
örneğimiz için temp tablo ve datalarını aşağıdaki gibi hazırlıyoruz.
DECLARE @TT TABLE
(
ID int,
Relation varchar(25),
Name varchar(25),
ParentID int
)
INSERT @TT
SELECT 1,' Great GrandFather' , 'Thomas Bishop', null UNION ALL
SELECT 2,'Grand Mom', 'Elian Thomas Wilson' , 1 UNION ALL
SELECT 3, 'Dad', 'James Wilson',2 UNION ALL
SELECT 4, 'Uncle', 'Michael Wilson', 2 UNION ALL
SELECT 5, 'Aunt', 'Nancy Manor', 2 UNION ALL
SELECT 6, 'Grand Uncle', 'Michael Bishop', 1 UNION ALL
SELECT 7, 'Brother', 'David James Wilson',3 UNION ALL
SELECT 8, 'Sister', 'Michelle Clark', 3 UNION ALL
SELECT 9, 'Brother', 'Robert James Wilson', 3 UNION ALL
SELECT 10, 'Me', 'Steve James Wilson', 3
Yukarıdaki tanımlamalardan sonra aşağıdaki Recursive fonksiyon ile Parent ve Generation Level bulunuyor.
;WITH FamilyTree
AS
(
SELECT *, CAST(NULL AS VARCHAR(25)) AS ParentName, 0 AS Generation
FROM @TT
WHERE ParentID IS NULL
UNION ALL
SELECT Fam.*,FamilyTree.Name AS ParentName, Generation + 1
FROM @TT AS Fam
INNER JOIN FamilyTree
ON Fam.ParentID = FamilyTree.ID
)
SELECT * FROM FamilyTree
çıktı görüntüsü aşağıdaki gibi olacaktır.

Tags: sql, veri yapıları