Ієрархічні та рекурсивні запити в SQL Server
Jasmin Ludolf
Content Developer
familyTree описано так:
ID особиName особиparentID — ID батька/матеріЕлементи, що задають ієрархію:
IDparentID
Запам'ятайте принципи рекурсивних CTE:
Також пам'ятайте робочі принципи:
Отримайте кількість поколінь
Визначте LEVEL
-- Anchor member
0 as LEVEL
-- Recursive member
LEVEL + 1
Порахуйте кількість рівнів, щоб отримати покоління: COUNT(LEVEL)
Generations:
100
Отримайте всіх можливих батьків в одному полі
-- Anchor member
CAST(ID AS VARCHAR(MAX)) as Parent
-- Recursive member
Parent + ' -> ' + CAST(parentID AS VARCHAR(MAX))
+---------------------------------------------+
| Name | Parent |
|-----------------|---------------------------|
|Dominik Egarter | 100 -> 101 -> 102 ->103 |
+---------------------------------------------+
Ієрархічні та рекурсивні запити в SQL Server