【发布时间】:2017-02-07 09:22:02
【问题描述】:
我有以下三个代表产品数据的表格。简而言之,产品“A”和“B”是最终产品。为了找出构成产品“A”的部件,我们查看“ProductComponents”表,该表给出了 ComponentListId = 1。
根据“PartsSubcomponents”表查询这个 ComponentListId 告诉我们它有两个子组件,即 A11 和 A12。
A11 很小,没有其他子组件。但是,A12 存在于“ProductComponents”表中,告诉我们它是由 X1 和 X2 制成的。
最终产品
EndProductId
A
B
...
产品组件
ProductId ComponentListId
A 1
A12 99
...
Parts子组件
ComponentListId SubComponentId
1 A11
1 A12
99 X1
99 X2
...
我需要使用 CTE 来查找产品及其部件之间的层级。在这种情况下,结果应该是这样的:
EndProductId,ProductId,ComponentListId,SubcomponentId,Level
A, A, 1, A11, L1
A, A, 1, A12, L1
A, A12, 99, X1, L2
A, A12, 99, X2, L2
【问题讨论】:
-
我虽然想写一个控制台应用程序,但很快就变得很脏。无法将 CTE 的 Internet 示例映射到我的问题,但我仍然相信这将是最好的方法。
标签: sql-server common-table-expression recursive-cte