2012-12-20 67 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;