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;