Иерархические и рекурсивные запросы в SQL Server
Jasmin Ludolf
Content Developer
Таблица familyTree содержит:
ID — идентификатор человекаName — имя человекаparentID — идентификатор родителяПоля, описывающие иерархию:
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