相关疑难解决方法(0)

最简单的递归自联接方式?

在SQL Server中执行递归自联接的最简单方法是什么?我有这样一张桌子:

PersonID | Initials | ParentID
1          CJ         NULL
2          EB         1
3          MB         1
4          SW         2
5          YT         NULL
6          IS         5
Run Code Online (Sandbox Code Playgroud)

而且我希望能够获得仅与特定人员开始的层次结构相关的记录.所以,如果我通过PersonID = 1请求CJ的层次结构,我会得到:

PersonID | Initials | ParentID
1          CJ         NULL
2          EB         1
3          MB         1
4          SW         2
Run Code Online (Sandbox Code Playgroud)

对于EB,我会得到:

PersonID | Initials | ParentID
2          EB         1
4          SW         2
Run Code Online (Sandbox Code Playgroud)

我有点卡住这个可以想不出怎么做除了基于一堆连接的固定深度响应.这会发生,因为我们不会有很多级别,但我想做得恰到好处.

谢谢!克里斯.

sql sql-server recursion self-join hierarchical-data

93
推荐指数
3
解决办法
9万
查看次数

将多个到多个关系中的所有相关记录分组,SQL图连接组件

希望我错过了一个简单的解决方案.

我有两张桌子.一个包含公司列表.第二个包含发布者列表.两者之间的映射是多对多的.我想要做的是捆绑或分组表A中与表B中的发布者有任何关系的所有公司,反之亦然.

最终结果看起来像这样(GROUPID是关键字段).第1行和第2行属于同一组,因为它们共享同一家公司.第3行位于同一组中,因为发布者Y已映射到公司A.第4行位于组中,因为公司B已通过发布者Y映射到组1.

简单地说,只要公司和发布商之间存在任何类型的共享关系,就应该将该对分配给同一组.

ROW   GROUPID     Company     Publisher
1     1           A           Y
2     1           A           X
3     1           B           Y
4     1           B           Z
5     2           C           W
6     2           C           P
7     2           D           W
Run Code Online (Sandbox Code Playgroud)

小提琴

更新:
我的赏金版本:鉴于上面简单CompanyPublisher成对的小提琴表,填充GROUPID上面的字段.可以将其视为创建Family包含所有相关父母/子女的ID.

SQL Server 2012

sql sql-server sql-server-2012

16
推荐指数
3
解决办法
3853
查看次数