表的n次中的所有用户包括列用户1,用户2,connectionStrength和示例记录如下:选择连接
A,B,0.2
A,C,0.5
A,G,0.1
B,C,0.8
W,Q,0.4
G,Q,0.5
我想定义的程度内检索所有用户连接所选用户,然后绘制连接图。但问题是如何从表中选择满足条件的所有记录。例如,如果选择了用户A和度设定为2从例如以下记录应选择:上述
A,B,0.2
A,C,0.5
A,G,0.1
B,C,0.8
G,Q,0.5
的例子是假设。实际上,我所处理的数据库中有超过200M的连接,目前我使用C#和Microsoft SQL Server 2008进行分析。
有谁知道如何编写一个函数(字符串GetQuery(字符串selectedUser,int degreeOfConnection))来组成一个查询,返回满足条件的所有记录(所选用户的连接程度)?
编辑#1
我试图通过执行递归查询以下方式获得连接:
WITH user_connections(user1, user2, link_strength, Level)
AS
(
SELECT user1, user2, link_strength, 0 AS Level FROM [dbo].[monthly_connections] AS mc WHERE user1 = '1ADF1126F26B4AD4441A3C552FCE04A4F7A79760'
UNION ALL
SELECT mc.user1, mc.user2, mc.link_strength, Level + 1 FROM [dbo].[monthly_connections] AS mc INNER JOIN user_connections AS uc ON uc.user2 = mc.user1
)
SELECT user1, user2, link_strength FROM user_connections OPTION(MAXRECURSION 1)
到目前为止已经执行了超过40分钟的查询,所以我会很感谢任何人只要检查陈述是否正确。
谢谢!
您正在寻找具有累积距离<= N从目标用户的所有用户?你必须在一个查询中完成它,还是允许创建具有查询作为帮助器的c#过程并使用少量查询调用构造数据集? – 2010-10-22 18:47:35