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