表的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