首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从物料清单表格中获取递归数据

如何从物料清单表格中获取递归数据
EN

Stack Overflow用户
提问于 2010-09-11 01:47:37
回答 2查看 3.9K关注 0票数 3

这是在SQL Server 2008中。

我计划创建两个表来表示物料清单。Item Master将包含如下数据:-

ID项目描述

1- A001 -部件1

2- B001 -子程序集1(程序集1的子项)

3- B002 -子程序集2(程序集1的子项)

4-C001-组件1(子组件1的子项)

5-C002-组件2(子组件2的子项)

BOM关系表将包含如下数据。父项ID和子项ID是项主文件的外键。:-

ID子项ID

1-1-2

2-1-3

3-2-4

4-3-5

因此,第一个表只包含项本身,而另一个表具有关于哪个父ID具有哪个子项的关系。

假设程序集(A001)可能需要根据添加到上述表中的数据进行递归迭代,那么获取所有子项的SQL应该是什么呢?

因此,对于上面的数据,我应该得到如下输出:

1) A001

代码语言:javascript
复制
                1.1) B001       
                               1.1.1)C001      
                1.2) B002         
                               1.2.1) C002  

谢谢,Chak。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-11 02:04:02

使用recursive CTE。例如:

代码语言:javascript
复制
WITH BomTree (ID, Level, [Item Code], [Item Description], Depth)
AS
(
-- Anchor member definition
    SELECT m.*, 0 AS Depth
    FROM dbo.Master AS m
    WHERE m.[ID] = ?
    UNION ALL
-- Recursive member definition
    SELECT m.*, t.Depth + 1 AS Depth
    FROM dbo.Master AS m
    INNER JOIN dbo.BOM AS b
        ON m.[ID] = b.[Child Item ID]
    INNER JOIN BomTree AS t
        ON b.[Parent Item ID] = t.ID
)
-- Statement that executes the CTE
SELECT * FROM BomTree; 
票数 2
EN

Stack Overflow用户

发布于 2010-09-11 01:54:41

您需要使用recursive common table expression对当前结构执行此操作。

SQL Server2008中还有一种hierarchyid类型,可以让事情变得更简单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3686935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档