PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

postgres - z rekurencyjną

Przede wszystkim Twój (2, 'grandparent', null) powinno być (3, 'grandparent', null) czy to naprawdę dziadek. Po drugie, twój (niejawny) warunek złączenia w rekurencyjnej połowie zapytania jest odwrócony, chcesz usunąć rodzica z rt.levelparent zamiast 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kolumna błędu c.CreatedOn nie istnieje... w dziennikach PostgreSQL podczas inicjalizacji pierwszego kontekstu kodu przy użyciu dostawcy Devart dotConnect

  2. Uzyskaj listę pierwszych rekordów dla każdej grupy

  3. PDO otrzymuje ułamki sekund od Postgres

  4. Jak zaszyfrować kolumnę w Postgresie za pomocą Hibernate @ColumnTransformer

  5. PostgreSQL 12:Klucze obce i tabele partycjonowane