Получить соответствующий root узел для каждой дочерней записи в PostgreSQL - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть таблица с именем «континенты» в этой структуре:

enter image description here

Мне нужно было получить узел root для всех дочерних записей в единственная таблица, которая похожа на:

enter image description here

Порядок отображения в отношении не имеет значения. Европа -> Франция -> Париж может отображаться в любом порядке. Мне удалось сгенерировать отношение для каждого ребенка, используя рекурсивный запрос

    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. Любая помощь приветствуется. Спасибо!

...