ページのリストからナビゲーション メニューを作成しています。テーブルは次のようになります。
Table name: pages
id | type | parent | name
-------------------------------
1, 1, null, root1
2, 1, null, root2
3, 2, 2, home
4, 2, 3, child
5, 2, 4, sub_child
6, 3, 5, sub_sub_child
type:
1 = root page / site
2 = page
3 = ...
私の問題は、どのページからでもルートページを見つけなければならないことです。ルート ページを除いて、親ページを参照する列の親があります。
テーブルには複数のルート ページを含めることができますが、各ページには親が 1 つしかありません。
誰かが再帰クエリを書くのを手伝ってくれませんか?
このクエリを使用しようとしていますが、機能しません:
with recursive pages (id, parent) as
(
select pages.id,
pages.parent,
from pages
where pages.id = 4
union all
select pages.id,
pages.parent,
from pages
inner join pages p on p.id = pages.parent
)
select id
from pages;
ありがとう