2012-12-20 37 views
1

我们的材料清单表有3个主要栏目:零件号码,家长部分和级别代码(0不是父母,3是孩子孩子的孩子等)。查询材料清单

我想要基于单个部件进行查询并获取其所有子项及其子项,依此类推。

它似乎很简单,但我一直在努力与这一个。任何人都有可以提供的解决方案?

一如既往,我感谢帮助。

每兰迪的要求,这里是更多的一些信息:

PARPRT =父 COMPRT =组件

在屏幕截图中,所有的部件都是“101002物料清单的一部分”。

在表格后面,您将看到PARPRT列中列出的COMPRT中的每个组件以及使它们各自运行的组件。

我想查询'101002'的BOM,不仅得到COMPRT中PARPRT ='101002'的4个部分,还包括他们的COMPRT等等。

screenshot

+0

您尚未提供足够的信息给任何人给你一个有用的答案。请张贴涉及的表格模式,以及您一直在处理的Select语句。 –

+1

最高等级是多少?如果很大,您将需要使用递归CTE进行此类查询。 –

+0

由于您使用的是SQL Server 2008,因此您可能需要考虑在该表中使用层次结构ID。本文介绍如何将其与BOM一起使用:http://msdn.microsoft.com/en-us/magazine/cc794278.aspx –

回答

0

谢谢你对那些谁提议的CTE。那正是我所期待的。

这是查询后,我结束了一些试验和错误。

USE PartDatabase
GO
DECLARE @TheSinglePart CHAR(30)= '100001';

WITH BOM(PARPRT_02,COMPRT_02,QTYPER_02)
AS

- 锚构件定义
SELECT e.PARPRT_02,e.COMPRT_02,e.QTYPER_02
FROM dbo.Product_Structure为E
WHERE e.PARPRT_02 = @TheSinglePart
UNION ALL
- 递归成员定义
SELECT e.PARPRT_02,e.COMPRT_02,e.QTYPER_02
FROM dbo.Product_Struct URE为E
INNER JOIN BOM AS d
ON e.PARPRT_02 = d.COMPRT_02


SELECT *
FROM BOM;