0
給定一個源節點,我想讓所有節點「在」它下面,這意味着所有節點的級別小於給定節點的級別並且可以從給定節點到達。我記得這可以使用通用表格表達式來完成,並且正在處理它。但是,有沒有辦法在一個大圖(由大約100K個節點組成)上快速執行此操作?在給定節點下獲取節點?
的樣本數據:
CREATE TABLE #TEMP(Source VARCHAR(50), SourceLevel INT, Sink VARCHAR(50), SinkLevel INT);
INSERT INTO #TEMP VALUES('A', 1, 'B', 2);
INSERT INTO #TEMP VALUES('A', 1, 'C', 2);
INSERT INTO #TEMP VALUES('B', 2, 'C', 2);
INSERT INTO #TEMP VALUES('B', 2, 'D', 3);
INSERT INTO #TEMP VALUES('B', 2, 'E', 3);
INSERT INTO #TEMP VALUES('C', 2, 'D', 3);
INSERT INTO #TEMP VALUES('C', 2, 'F', 3);
INSERT INTO #TEMP VALUES('C', 2, 'G', 3);
SELECT *
FROM #TEMP
GO
DROP TABLE #TEMP
GO
圖:
A Level - 1
/\
B---C Level - 2
/\ /|\
E D F G Level - 3
例子:
- 鑑於B,我想:E,d
- 鑑於A,我想:B,C,E,d,F,G
- 鑑於C,我想:d,F,G
[檢查。] [1]這可能會回答你的問題 [1]:http://stackoverflow.com/questions/4188427/sql-query-for-parent-child -chain – SP007 2013-02-27 19:28:06
@helloSuresh:謝謝!我已經開始通過遞歸CTE來做這件事,並提供了一個可能的解決方案。 – Legend 2013-02-27 19:39:44