Рекурсія в SQL

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


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

0672c4761d202a35a9059fa137ace7c3/ca9b571d40544dcd8e0afc989c89c49f8b1f3251

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

0672c4761d202a35a9059fa137ace7c3/ca9b571d40544dcd8e0afc989c89c49f8b1f3251

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

0672c4761d202a35a9059fa137ace7c3/ca9b571d40544dcd8e0afc989c89c49f8b1f3251

Назад