私は、親子関係のある1つのテーブルにページが配置されているWebサイトに取り組んでいます。ページの深さはどのレベルにもなる可能性があり、データベースに基づいてWebサイトのBreadCrumbを生成したいと思います。下の画像に示すサンプルデータとデータフィールド。
基本的なテーブル構造はTableNameWeb_Pagesに似ています
テーブル列 (PageID int、PageName Varchar、PageInternalLinkURL Varchar、PageInheritance int)
表のサンプルデータの例
ページ上のブレッドクラムの例
サイトナビゲーション用のパンくずを、下のサンプル画像に示されているもののように見せたいです。
私は何週間も試しましたが、正しく理解できませんでした。
サイトマップなしで使用したいのですが、文法的に作成し、PageNameフィールドを正しいページURLにリンクしたいと思います。
ページがCMSに追加されるたびに、任意のページ深度で機能するパンくずが動的に作成されるようにしたいと思います。
正しく機能していないCTEクエリを使用しました。誰かがこの問題を解決するか、私のような完全な実例を指摘していただければ幸いです。
CTEのテストが機能しない
SELECT * FROM pg_Pages;
WITH RecursiveTable (PageId, PageInheritance, Level)
AS
(
--Anchor
SELECT tt.PageId, tt.PageInheritance, 0 AS Level
FROM pg_Pages AS tt
WHERE PageInheritance = 0
UNION ALL
--Recursive member definition
SELECT tt.PageId, tt.PageInheritance, LEVEL + 1
FROM pg_Pages AS PageId
INNER JOIN RecursiveTable rt ON
tt.PageInheritance = rt.PageId
)
SELECT *
FROM RecursiveTable