我有一個SQLServer2005的表「集團」,類似以下內容:如何迭代Sql Server 2005存儲過程中的分層數據?
Id (PK, int)
Name (varchar(50))
ParentId (int)
其中的ParentId是指其他ID在組表。這是用來分層羣體,如型號:
Group 1 (id = 1, parentid = null)
+--Group 2 (id = 2, parentid = 1)
+--Group 3 (id = 3, parentid = 1)
+--Group 4 (id = 4, parentid = 3)
Group 5 (id = 5, parentid = null)
+--Group 6 (id = 6, parentid = 5)
你明白了
我還有一個表,我們稱之爲「數據」爲簡化起見,它看起來像:
Id (PK, int)
Key (varchar)
Value (varchar)
GroupId (FK, int)
現在,我正在嘗試編寫一個存儲過程,它可以讓我獲得給定組的「數據」。例如,如果我查詢組1,它將返回數據中的鍵值對,其中groupId = 1。如果查詢組2,則返回groupId = 1的KVPs,然後與具有groupId = 2(並且重複的密鑰被替換)。
理想情況下,存儲過程也將無法正常,如果有一個週期(即,如果第1組的母公司是2組和第2組的父組1)
有沒有人有經驗,寫這樣一個存儲過程,或知道這可能如何實現?
謝謝你們,非常感謝,
亞歷
是否查詢只選擇該組及其父基來實現? – 2010-06-14 10:53:27
該查詢只會選擇一個組(例如,EXECUTE usp_Data_QueryForGroup @GroupId = 3),然後存儲的proc將處理確定該組父母併合理合並數據的邏輯) – AlexC 2010-06-14 10:58:04