PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

postgres - với đệ quy

Trước hết, (2, 'grandparent', null) của bạn phải là (3, 'grandparent', null) nếu nó thực sự là một ông bà. Thứ hai, điều kiện tham gia (ngầm định) của bạn trong nửa đệ quy của truy vấn ngược, bạn muốn lấy cấp độ gốc ra khỏi rt.levelparent thay vì 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. Cách cài đặt PostgreSQL 9.1 trên OSX Lion

  2. Trình điều khiển Postgres JDBC:PSQLException:lỗi cú pháp tại hoặc gần RETURNING

  3. SQL JOIN trong PostgreSQL - Kế hoạch thực thi trong mệnh đề WHERE khác với mệnh đề ON

  4. GroupingError:ERROR:cột phải xuất hiện trong mệnh đề GROUP BY hoặc được sử dụng trong một hàm tổng hợp

  5. Làm cách nào để sử dụng bindparam () trong một biểu thức được biên dịch tùy chỉnh?