【发布时间】:2011-12-01 20:19:01
【问题描述】:
拥有一张用户表,任何用户都可以与其他用户建立友谊。所以,
UserTable
-----------
User1
User2
User3
FriendshipTable
-----------
User1, User3
User2, User5
User3, User5
User5, User9
第 1 部分:我正在寻找一种方法来获取完整的朋友、朋友的朋友等。例如 User1 将返回:User1、User5、User2、User9
第 2 部分:如果我能获得最大的人脉网络的规模,这将是有用的,但不是必需的
或者,是否有更好的方法来存储用户之间的连接,从而更轻松地提取我需要的信息?就像在创建友谊时建立和合并一个友谊组列表?
我在这里找到了一些类似的帖子,但它们似乎都没有超过第一级深度。
我想那里有解决方案,但我什至不知道要搜索什么。
【问题讨论】:
-
MSSQL 2008 和 .NET 解决方案不必只有 SQL,我想我需要一些临时表和递归。
-
如果是 SQL 2K8,您可以使用递归 CTE 并指定
MAXRECUSION选项,在0(无限制)或某个已知限制。 FoF 可以非常迅速地扩展,并将在关系图中包含循环。 -
我也在考虑 CTE。到目前为止,我发现的 CTE 递归示例都在同一个表中的记录之间使用父/子层次关系。我还没有遇到过使用我可能需要的第二个关系表的演示。
标签: .net sql sql-server-2008 many-to-many data-modeling