循环使用案例

时间:2016-11-08 19:46:52

标签: tsql recursion common-table-expression self-join

我有两张桌子:

CompanyCases是一个公司和案例编号的表格,如下所示:

CompanyId,CaseNumber

CaseRelations是案例及其相关案例的表格,如下所示:

CaseNumber,RelatedCase

可能有几家公司涉及一个案例,一个案例可能与几家公司有关。

我需要一个查询,它会为我提供公司ID的所有相关案例。诀窍在于,当我找到相关案例时,也可以有相关案例,可以有相关案例等。

我的第一个假设是它不会那么深,所以我可以像以下一样进行自我加入:

Select 
cc.CompanyId,
cc.CaseNumber,
CR1.CaseNumber,
CR1.RelatedCase,
CR2.CaseNumber,
CR2.RelatedCase

FROM CompanyCases cc
LEFT JOIN CaseRelations CR1 ON CR1.CaseNumber = cc.CaseNumber
LEFT JOIN CaseRelations CR2 ON CR2.CaseNumber = CR1.RelatedCase

然后继续加入所需的级别。问题是案例循环。所以它可以这样:

CaseNumber    RelatedCase
1                 2
2                 3
3                 1

所以我可以永远加入而不会获得完整的空值列。它至少有5级深,所以这不是一个很好的解决方案。我也不介意使用递归CTE,但我想我会在循环案例中遇到同样的问题。

我希望我描述得足够好 - 有谁知道如何解决这个问题?

提前致谢:)

0 个答案:

没有答案