我有两张桌子:
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,但我想我会在循环案例中遇到同样的问题。
我希望我描述得足够好 - 有谁知道如何解决这个问题?
提前致谢:)