1


は、CategoryID (主キー)、ParentID (int が null ではない)、Category (nvarchar が null ではない) を持つ Category テーブルを持っています。
ID CategoryID のカテゴリと ID ParentID のサブカテゴリをこのテーブルに挿入して取得しようとしています。
運がなかった週末全体を試してみました。あなたが私を助けてくれることを願っています. MSSQL 2008 を使用しています。
テーブル構造は次のようになります。

-Category1          
        SubCategory1  
        SubCategory2  
    ...  

-Category2  
            SubCategory2  
            SubCategory2  
    ...  

どんな助けでも大歓迎です

4

3 に答える 3

0

再帰共通テーブル式を使用できます。

WITH cteTable(madeUpColA, madeUpColB, Etc) as
(
   -- this select statement with the union all is what does the recursive query
   SELECT aCol as madeUpColA, bCol as madeUpColB, Etc
   from dbo.someTable
   UNION ALL
   SELECT aCol as madeUpColA, bCol as madeUpColB, Etc
   FROM dbo.someTable st
   INNER JOIN cteTable as c -- inner join on relationship
   ON st.aCol = c.madeUpColA
)
-- this select statement is what retrieves the data from the above query
SELECT madeUpColA, madeUpColB, Etc
FROM cteTable
-- add your other criteria here

ステートメントのMSDNドキュメントを使用WITHして、クエリを特殊化できます

于 2012-05-07T12:59:01.593 に答える
0

単純な自己参加を探していますか?もしそうなら、これはうまくいくはずです:

select parent.category, subcat.category as subcategory
from Category subcat join
     Category parent
     on subscat.parentid = parent.categoryid

それとも、親のチェーン全体を横断する必要がありますか?もしそうなら、再帰CTEがより良いアプローチです。

于 2012-05-07T20:35:12.613 に答える
0

Common Table Expressions を確認してください。これにより、「再帰選択」を作成できます。 http://www.mssqltips.com/sqlservertip/1520/recursive-queries-using-common-table-expressions-cte-in-sql-server/

于 2012-05-07T12:42:17.477 に答える