私は以下のテーブルを持っています。 記事、カテゴリ、記事カテゴリテーブルと再帰クエリの結合
各記事には複数のカテゴリがあります。 問題は、データベースがカテゴリにParentCategoryIdを含むように設計されており、記事がルートカテゴリに接続する必要はなく、実際にそのカテゴリの子カテゴリの1つに属しているためです。
例
カテゴリー
- 区分1、ParentCategory 0
- カテゴリ2、ParentCategory 1
- カテゴリ3、ParentCategory 2
条
-
私は必要なもの
- ID = 1
ArticleCategories今
- 情報でarticleID = 1、区分= 3
は、(そのルートカテゴリで記事を一覧表示する方法ですカテゴリいますParentID = 0を持つ)。 返されたデータセットは、私が
SELECT
ar.Id,
ar.Title,
ac.CategoryId,
ca.Name FROM Article ar
INNER JOIN ArticleCategories ac
ON ar.Id = ac.ArticleId
INNER JOIN Categories ca
ON ca.CategoryId = ac.CategoryId
で始まっしかし、これは明らかに既存のカテゴリではなく、彼らのルートカテゴリで記事に参加するだけのクエリで情報でarticleIDとRootCategoryId(子カテゴリの必要がない)
を持っているでしょう。 私はルートカテゴリに到達するために何らかの種類の再帰が必要だと思います。
なぜ最初のselect文でc.categoryidを2倍に選択しますか? – Robert
@Robert。 。 。 1つはカテゴリID用で、もう1つはルートカテゴリID用です。 –