सबसे पहले, आपका (2, 'grandparent', null)
होना चाहिए (3, 'grandparent', null)
अगर यह वास्तव में दादा-दादी है। दूसरे, आपकी (अंतर्निहित) आपकी क्वेरी के पुनरावर्ती आधे भाग में शामिल होने की स्थिति पीछे की ओर है, आप माता-पिता को rt.levelparent
से बाहर निकालना चाहते हैं के बजाय 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;