У меня есть таблица с именем «континенты» в этой структуре:
Мне нужно было получить узел root для всех дочерних записей в единственная таблица, которая похожа на:
Порядок отображения в отношении не имеет значения. Европа -> Франция -> Париж может отображаться в любом порядке. Мне удалось сгенерировать отношение для каждого ребенка, используя рекурсивный запрос
WITH RECURSIVE ancestors AS (
SELECT id, name, parent_id
FROM continents
WHERE name = 'Frankfurt'
UNION ALL
SELECT c.id, c.name, c.parent_id
FROM continents c, ancestors a
WHERE c.id = a.parent_id)
Я соединил этот результат со всей таблицей континентов, чтобы получить результаты для каждого дочернего класса.
Однако мне интересно посмотреть, смогу ли я получить результаты в одном рекурсивном запросе для целей оптимизации. Я пытался иметь несколько якорных запросов, но просто не мог понять лог c. Любая помощь приветствуется. Спасибо!