Рекурсія в SQL

Реляційні системи керування базами даних на основі SQL лише частково підходять для ієрархічних або рекурсивних запитів. Інші системи, такі як ArangoDB, краще підходять для цього (про це була чудова доповідь на GOTO 2016 ). Однак, також можливо створювати рекурсивні запити в SQL за допомогою Common Table Expressions , що дозволяє, наприклад, запитувати класичні таблиці батьків/дочір для всіх предків та нащадків.


Наприклад, у PostgreSQL це виглядає так:

0672c4761d202a35a9059fa137ace7c3

Якщо ви хочете отримати всіх дочірніх елементів певного item_id, ви використовуєте загальні вирази таблиці:

0672c4761d202a35a9059fa137ace7c3

Запитати батьків теж не проблема:

0672c4761d202a35a9059fa137ace7c3

Назад