私は3つのSQL Serverテーブルを持っています:Projects
、ProjectTree
、ProjectTreeRec
です。SQL ServerのSelectステートメントの再帰
Projects
はディレクトリと似ており、Standard Parts
というディレクトリの下にあるすべてのサブディレクトリを検索しようとしています。ここで明らかに再帰が必要です。
Projects
テーブルには、次の列があります。
ProjectID, Name, Deleted
ProjectTree
テーブルには、次のカラムがあります
ProjectID, ChildProject
私はこの取り組みの一環としてProjectTreeRec
テーブルを必要とは思いません、列にはChildProjectID
,ParentProjectID
,Level
が含まれています。
Standard Parts
ディレクトリの下のすべてのサブディレクトリが削除されていない(1ではなく0である)再帰的なselect文を開発したいと考えています。
CTEと再帰の初心者です。私はいくつかの結果を得るが、私は何をしていない。
私は最初のレベルを見つけたが、深くは進まない非再帰的呼び出しです。それはうまく動作します。
SELECT
'(Directory Not Available)'
UNION
SELECT DISTINCT
C.[Name]
FROM
[EPDM].[dbo].[Projects] A
JOIN
[EPDM].[dbo].[ProjectTree] B ON B.ProjectID = A.ProjectID
JOIN
[EPDM].[dbo].[Projects] C ON B.childproject = C.projectid
WHERE
A.name = 'Standard Part Library'
AND A.[Deleted] = 0;
助けを歓迎します。
どのバージョンのSQL Serverを使用していますか? –
再帰的CTEを確認できます:http://stackoverflow.com/questions/37973842/get-all-duplicate-data-by-parent-or-child-id-sql-server/37975448#37975448 –
私は使用しています[パス]は FROM ( が を選択するとSQL Serverの標準2014 – CodeWriter