我有一個表格將從第三方Web服務中抓取幾百個服務。這些服務有數百萬個符號,我也正在獲取。從下往上遍歷SQL層次結構到達特定級別
層次結構本質上是這樣的;
root
|_service1
| |_service1/sub1*
| |_service1/sub2
| |_service1/sub3
| |_service1/sub4
| | |_service1/sub4/sub1
| | |_**service1/sub4/sub1/leaf1**
| |
| |_service1/sub5
|
|_service2
|_service2/sub1
|_service2/sub2
|_service2/sub3
所以我想要實現的是 - 給定一個ID爲葉,我要工作了樹,直到我找到了分公司是isActive true,則返回值。
在這個例子中,我想找到的葉/service1/sub4/sub1/leaf1
在這種情況下是service1/sub1
主動服務到現在我一直在使用一個公用表表達式從頂部向下的工作和設置位於該分支下的葉子上的附加ActiveServiceId列;數百萬的符號變成了一個非常漫長的過程。
我只使用一個非常小的符號子集(雖然我不知道哪些和我需要它們全部),因此在查詢時已知的葉子ID只有幾百個。
我創建了一個SQLFiddle,以反映這一層次結構,以幫助任何人誰也許能幫助
UPDATE進一步解釋目前的做法。如果我決定service1
將成爲新的活動服務 - 每個子分支中service1下的葉子需要冒泡到service1,我將重置所有子分支,因此它們都不會被標記爲活動
你有沒有考慮過使用分層數據類型?:http://technet.microsoft.com/en-us/library/bb677173.aspx – Jayvee
我剛剛讀了這個,有用的信息,現在有,但我不'我認爲它會解決這個特殊的問題。 – owen79