0

親カテゴリの親カテゴリと子カテゴリを作成しているという点で、カテゴリテーブルがあります。

今、私はこのような私のカテゴリを取得しています

Select CatID,CatName,ParentCatID from Category 

CatID   CatName ParentCatID
 35         Test1   0
 36         Test2   35
 37         Test3   36
 38         Test4   0
 39         Test5   38
 40         Test6   39

このような出力が欲しいのですが、

   CatID CatName   ParentCatID   ParentRoot
    35   Test1        0          None
    36   Test2        35         Test1
    37   Test3        36         Test1>Test2
    38   Test4         0         None
    39   Test5        38         Test4
    40   Test6        39         Test4>Test5
4

2 に答える 2

0

テーブルのレベル数に制限はありますか? 2 レベル以上の深さになることがないことがわかっている場合は、自己結合で実行できる可能性があります。

SELECT
   C.CatID,
   C.CatName,
   C.ParentCatID,
   CASE 
      WHEN P.CatName is NULL THEN 'None' 
      ELSE WHEN GP.CatName is NULL THEN P.CatName 
      ELSE P.CatName + '>' + GP.CatName
   END
FROM
   Category C   -- child
   LEFT OUTER JOIN Category P ON C.ParentCatID = P.CatID    -- parent
   LEFT OUTER JOIN Category GP ON P.ParentCatID = GP.CatID  -- grand parent

ただし、これは 2 レベル以下の場合にのみ機能します。それ以上の場合は、共通テーブル式の使用を検討する必要があります。

于 2013-09-24T13:50:25.303 に答える