データベーステーブルをネストされたURLで構造化し、ParentIDとIDを使用してURLのどの部分がどこに属するかを示します。データベースからネストされたURLを再帰的に取得する
表の構造は次のようになります。
+-----+----------+------------+-------------+
| ID | ParentID | Name | Url |
+-----+----------+------------+-------------+
| 1 | 0 | Categories | categories |
| 34 | 1 | Movies | movies |
| 281 | 34 | Star Wars | star-wars |
| 33 | 1 | Books | a-good-book |
+-----+----------+------------+-------------+
私は何をしたい、私は再帰的にすべてのフィールドを通過できるようにしたいということです、とのParentIDによると、すべての可能なURLの組み合わせを保存。上記の表から
だから、私は次の出力を取得したいのです:私はこのように見て、CTEを書き始めました
mysite.com/categories
mysite.com/categories/movies
mysite.com/categories/movies/star-wars
mysite.com/categories/books
mysite.com/categories/books/a-good-book
:
WITH CategoriesCTE AS
(
SELECT
Name,
Url,
ParentID,
ID
FROM myDB
WHERE ParentID = 1
UNION ALL
SELECT
a.Name,
a.Url,
a.ParentID,
a.ID
FROM myDB.a
INNER JOIN CategoriesCTE s on a.ParentID = s.ID
)
SELECT * FROM CategoriesCTE
事があり、このデータベース呼び出しはすべてをフラットに保存します。私がしなければならないことは、各ステップで、すべてのURLを保存し、各IDに対して、ParentIDが何であるかに従ってURLを保存することです。今はもちろんフォーマットされていませんが、私の出力はフラットなものです:
mysite.com/categories
mysite.com/movies
mysite.com/star-wars
mysite.com/a-good-book
多くの壊れたリンクが作成されます。 再帰的なステップごとにアクション/選択を行う方法はありますか?この問題にはどのように接近すべきですか?
は、あなたのデータ構造は正しいですか?カテゴリの後のURLには特定のものがある前に書籍がありますが、最初の表で説明すると、その関係に基づいてカテゴリに直接移動しますか? – Leonidas199x