sql >> Databasteknik >  >> RDS >> PostgreSQL

postgres - med rekursiv

Först av allt, din (2, 'grandparent', null) ska vara (3, 'grandparent', null) om det verkligen är en morförälder. För det andra är ditt (implicita) kopplingsvillkor i den rekursiva halvan av din fråga baklänges, du vill ta bort föräldern från rt.levelparent snarare än 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;



  1. PDO/MySQL minnesförbrukning med stor resultatuppsättning

  2. PHP, MYSQL kapslade frågor

  3. SQL-standard UPSERT-anrop

  4. Hur infogar man en PostGIS GEOMETRY Point i Sequelize ORM?