Как найти иерархию в SQL?

Middle+
346 просмотров
AFK Offer AI

Для иерархических данных (менеджер → подчинённые, категория → подкатегории) в PostgreSQL используешь recursive CTE. WITH RECURSIVE tree AS (SELECT id, name, parent_id FROM employees WHERE id = 1 UNION ALL SELECT e.id, e.name, e.parent_id FROM employees e JOIN tree t ON e.parent_id = t.id). Это вернёт всё поддерево от корня. Для обратного обхода (от листа к корню) — меняешь направление JOIN. Альтернативы: ltree расширение PostgreSQL (путь как строка), nested sets (left/right границы), closure table (все пары предок-потомок).

Следующий вопрос

Как делать smoke test?