获取SQL Server中两个节点之间的可能路径

时间:2016-03-16 12:43:52

标签: sql-server

我需要一些帮助来解决查询

我有两张这样的表:

Source       Destination
------      -------------
  1              2
  2              3
  3              4
  3              5

当用户输入source = 1destinaton = 5时,它应填充以下内容

1        2
2        3
3        5

2 个答案:

答案 0 :(得分:1)

这可能对您有所帮助

WITH CTE_SD
AS
(   SELECT  [Source],[Destination] FROM SD WHERE [Destination] = 5
    UNION ALL
    SELECT  SD.[Source],SD.[Destination]
    FROM    SD
    INNER JOIN CTE_SD   ON  SD.[Destination]    =   CTE_SD.[Source]

)
SELECT * FROM CTE_SD ORDER BY [Source]

... WHERE [Destination] = 5 -您可以在此使用参数或变量。 您还可以在CTE中使用其他逻辑

答案 1 :(得分:0)

听起来很像七度分离问题,取自Stack Overflow中回答的另一篇文章,我建议你看看下面的解决方案:

Degrees of Separation Query

祝你好运!