3

moduleid、name、parent_id の 3 つの列を持つ tblmodules というテーブルがあります。列parent_idは、他のモジュールの値を取ります。元:

Moduleid      Name       Parentid
--------     -----       --------
1           grandparent    Null
2            parent         1
3           child           2
4           childofChild    3

ストアド プロシージャに祖父母のパラメーターとして渡した場合、すべての子を取得するストアド プロシージャを構築したいと考えています。上記の例では、(親)だけが必要ではありませんが、祖父母の下にあるため、子と子の子が必要です。何か助けてください。

4

1 に答える 1

3

再帰的な CTEが必要です

CREATE PROC YourProc 
@ModuleId INT
AS
    WITH R
         AS (SELECT *
             FROM   YourTable
             WHERE  Moduleid = @ModuleId
             UNION ALL
             SELECT Y.*
             FROM   YourTable Y
                    JOIN R
                      ON R.Moduleid = Y.Parentid)
    SELECT *
    FROM   R 

SQL フィドル

于 2013-01-18T23:13:55.490 に答える