2016-05-26 7 views
1

製品テーブルに一致するカテゴリがある場合、既存の再帰的なカテゴリツリーから完全なノードを取得したいとします。再帰的なSQLクエリで完全なノードを見つける方法

私には以下のものがあります。

WITH ret AS (
     SELECT ID, ParentID, ProductCategoryId, ProductCategoryName 
     FROM ProductCategoryTree as p1, Products as p2 
     WHERE p1.ProductCategoryId = p2.ProductCategoryId 
     UNION ALL 
     SELECT p.ID, p.ParentID, p.ProductCategoryId, p.ProductCategoryName 
     FROM ProductCategoryTree as p INNER JOIN 
       ret r ON p.ParentID = r.ID 
    ) 
SELECT DISTINCT ID, ParentID, ProductCategoryId, ProductCategoryName 
FROM ret; 

これは私に、製品とそのカテゴリのすべての子ノードのカテゴリを与えるだろうが、私はまた、上位レベル(S)からカテゴリ(またはカテゴリ)を取得する必要があります。

任意の助けもいただければ幸いです!

+0

?最後の結合で親子関係を逆にするとどうなりますか? 'ret r ON p.ID = r.ParentID'? –

+0

こんにちはTamas、それはSQL Serverです。私はあなたの提案をテストし、最初のテストの後、私はそのトリックをしたと思う!だからシンプルで、しかも効果的です:)ありがとう。 – punatiainen

答えて

0

我々はコメントで述べたように、あなただけの参加の最後の行に親子関係を逆転し、それが動作します:

あなたが使用しないデータベース
ret r ON p.ParentID = r.ID 
関連する問題