Таблица состоит из столбцов user1, user2, 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
Пример выше является гипотетическим.В действительности в базе данных, с которой я работаю, более 200 миллионов соединений, и в настоящее время я использую C # и Microsoft SQL Server 2008 для анализа.
Кто-нибудь знает, как написать функцию (строка GetQuery (строка selectedUser, intстепеньOfConnection)) чтобы создать запрос, который возвращает все записи, которые удовлетворяют условию (степень подключения для выбранного пользователя)?
Edit # 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 минут, поэтому я был бы очень благодарен, если бы кто-нибудь мог просто проверить, правильно ли составлен оператор.
Спасибо!