我有三个SQL Server表:Projects
,ProjectTree
,ProjectTreeRec
。Select SQL语句中的递归
Projects
类似于目录,我试图找到一个名为Standard Parts
目录下的所有子目录。显然这里需要递归。
的Projects
表有以下几列:
ProjectID, Name, Deleted
的ProjectTree
表有以下几列:
ProjectID, ChildProject
我不相信我所需要的ProjectTreeRec
表作为这一努力的一部分,但它包含列ChildProjectID
,ParentProjectID
,Level
。
我想开发一个递归选择语句来查找Standard Parts
目录下的所有子目录,这些子目录还没有被删除(不是1,但是0)。
我是新来的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服务器? –
您可以检查递归CTE:http://stackoverflow.com/questions/37973842/get-all-duplicate-data-by-parent-or-child-id-sql-server/37975448#37975448 –
我正在使用SQL Server标准2014 – CodeWriter