【发布时间】:2017-10-02 11:24:06
【问题描述】:
我有一个查询,它返回代表两个实体(直接或间接)之间关系的两列,例如,右侧图表中显示的关系将由右侧表中的数据表示:
| From | To | 1 3 4
|------|----| o----o----o
| 1 | 3 | / \
| 1 | 4 | / \
| 1 | 5 | 2 o o 5
| 2 | 3 |
| 2 | 4 |
| 2 | 5 |
| 3 | 4 | 6 7
| 3 | 5 | o----o
| 6 | 7 |
我想要做的是将这些数据分组到多个集合中,等于关系描述的不同图表的数量(因此在上面的示例中为 2 个集合)。
这种分组可以作为数据库查询 (T-SQL) 的一部分发生,也可以在数据在内存中时发生 (C#)。
【问题讨论】:
-
我假设 1 到/从 5 在您的示例中是一个错误?或者如果不是,也应该有 4 到/从 2。
-
谢谢尼尔,我错过了 2 到 4 的关系。我已更新问题以包含该链接。
-
表中也不应该有 (From:1, To:2), (From:2, To:1), (From:3, to:1), (从:4,到:1)我认为如果所有关系都已完成输入表中,那么使用 CTE 导航和查找间隙(或孤岛)是可能的。如果您查看 SQL Server Internals 书籍,则可以找到寻找间隙/孤岛的解决方案。