sql >> Base de Datos >  >> RDS >> PostgreSQL

postgres - con recursivo

En primer lugar, su (2, 'grandparent', null) debe ser (3, 'grandparent', null) si realmente es un abuelo. En segundo lugar, su condición de unión (implícita) en la mitad recursiva de su consulta está al revés, desea sacar el padre de rt.levelparent en lugar de t.parent_level :

WITH RECURSIVE recursetree(level_id, levelparent) AS (
    SELECT level_id, parent_level 
    FROM level 
    WHERE level_id = 197

    UNION ALL

    SELECT t.level_id, t.parent_level
    FROM level t JOIN recursetree rt ON rt.levelparent = t.level_id
    -- join condition fixed and ANSI-ified above
)
SELECT * FROM recursetree;