Проаналізуйте родовід

Ієрархічні та рекурсивні запити в SQL Server

Jasmin Ludolf

Content Developer

Родовід

familyTree описано так:

  • ID особи
  • Name особи
  • parentID — ID батька/матері

Елементи, що задають ієрархію:

  • ID
  • parentID

Зображення родоводу

Ієрархічні та рекурсивні запити в SQL Server

Поєднаємо все разом

Запам'ятайте принципи рекурсивних CTE:

  • Ініціалізуйте рекурсію в опорному члені (anchor)
  • Реалізуйте рекурсивну функцію в рекурсивному члені
  • Задайте умову зупинки

Також пам'ятайте робочі принципи:

  • Отримайте рівень рекурсії
  • Об'єднайте результат рекурсії в одне поле
Ієрархічні та рекурсивні запити в SQL Server

Питання щодо родоводу

Отримайте кількість поколінь

  • Визначте LEVEL

    -- Anchor member
    0 as LEVEL
    -- Recursive member
    LEVEL + 1
    
  • Порахуйте кількість рівнів, щоб отримати покоління: COUNT(LEVEL)

Generations:
100
Ієрархічні та рекурсивні запити в SQL Server

Питання щодо родоводу

Отримайте всіх можливих батьків в одному полі

  • Об'єднайте результати рекурсії в одне поле
    -- 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

Перевірмо родовід!

Ієрархічні та рекурсивні запити в SQL Server

Preparing Video For Download...