0
我想在SQL Server中編寫一個查詢來提取鏈接到任務的所有信息,但我遇到了一些問題。我想要發生的是當我傳入一個參數(@TaskID)併爲此返回該ID的任務信息以及與該ID相關的任何子任務信息時。T-SQL遞歸函數 - 帶有ParentID的CTE
問題是,一旦你到達第一個子任務,它就會失去它與整個Parent TaskID的鏈接。例如:TaskID(3)最終鏈接到TaskID(1),但因爲它是TaskID(2)的子任務,所以除非將父節點(TaskID 1)連接到TaskID 2,然後連接到TaskID 3,否則無法檢查
我們想要做的是有無數的子任務,但這需要太多的連接。
我想知道是否有更好的方法?
表結構或明智的查詢。
樣本表結構
WITH cte AS (
SELECT
t.TaskID
,t.Title
,t.ParentID
,CAST(t.TaskID AS NVARCHAR(MAX)) [Path]
FROM
tasks.Tasks t
WHERE
t.TaskID = 3
UNION ALL
SELECT
c.ParentID
,c.Title
,t.ParentID
,c.[Path] + '->' + CAST(t.TaskID AS NVARCHAR(MAX))
FROM
tasks.Tasks t
INNER JOIN cte c on c.ParentID = t.TaskID
)
SELECT
cte.TaskID
,cte.Title
,cte.[Path]
FROM
cte
WHERE
cte.ParentID IS NULL
這給出正確的結果,但我真的應該傳遞的TaskID沒有PARENTID,因爲這將是頂級水平。所以,而不是在我的代碼塊t.TaskID = 3,我想通過1.我會玩...
公用表表達式是要走的路,雖然無限的可能是一個問題:P另一種看法:在任務類型和名稱是一個字符串,將導致大量的浪費空間。什麼版本的SQL Server? – UnhandledExcepSean
可能重複[Sql Hierarchy循環查詢](http://stackoverflow.com/questions/18427154/sql-hierarchy-loop-query) – Amit
這是上述^^^^^ 的副本,但如果您想要您需要添加更多100個循環 OPTION(MAXRECURSION 1000) 到CTE的底部 –