2012-07-11 31 views
1

我有下列的表 -如何讓所有的子ID

  1. ID(設備的ID)
  2. 設備名稱(設備名稱)
  3. PARENTID(父ID設備)

根據表我的數據存儲在樹形結構中,即一個設備包含幾個其他設備,它們又包含多個設備。

我需要的是獲得給定設備ID下的所有設備的ID。 我需要正確的SQL查詢來獲取所有的子節點(包括它自己的子節點)在父節點下。

例如,假設A是有孩子B1,B2的頂級節點。

B1包含C1,C2孩子,而B2包含C3,C4。

再次C1包含D1,D2 .... 等等。

我需要的是獲得所有B1,B2,C1,C2,C3,C4,D1,D2,....如果提供了A.

感謝分享你的時間。

+2

也許這線程可以幫助你http://stackoverflow.com/questions/3601900/t-sql-query-getting-child-nodes-of-a-parent – 2012-07-11 15:18:06

回答

6

您需要爲此使用recursive CTE

;WITH r as (
    SELECT ID 
    FROM DevicesTable 
    WHERE ParentID = @someID 

    UNION ALL 

    SELECT d.ID 
    FROM DevicesTable d 
     INNER JOIN r 
      ON d.ParentID = r.ID 
) 
SELECT ID 
FROM r 
+0

感謝賈斯汀您的快速回復。讓我檢查查詢。 – IrfanRaza 2012-07-11 15:20:03

+0

謝謝賈斯汀,它的工作.... – IrfanRaza 2012-07-11 15:27:29