SELECT查询物料清单

时间:2012-12-20 14:21:02

标签: sql sql-server-2008

我们的物料清单表有3个主要栏目:部件号,父部件和等级代码(0表示没有父母,3表示孩子的孩子,等等)。

我正在尝试基于单个部分进行查询并获取其所有子项及其子项,依此类推。

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

一如既往,我很感激帮助。

根据兰迪的要求,这里有更多信息:

PARPRT =家长 COMPRT =组件

在截屏中,所有零部件都是'101002'的物料清单的一部分。

在表格的后面,您将看到PARPRT列中列出的COMPRT中的每个组件以及使每个组件都成为组件的组件。

我想查询物料清单'101002',不仅可以获得COMPRT中的4个部分PARPRT ='101002',还可以获得COMPRT等等。

screenshot

1 个答案:

答案 0 :(得分:0)

感谢那些建议CTE的人。这正是我想要的。

以下是我在经过一些试验和错误后最终得到的查询。

  

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

  带BOM(PARPRT_02,COMPRT_02,QTYPER_02)
  AS
  (
   - 锚定成员定义
  SELECT e.PARPRT_02,e.COMPRT_02,e.QTYPER_02
      来自dbo.Product_Structure AS e
      在哪里e.PARPRT_02 = @TheSinglePart
  UNION ALL
   - 递归成员定义
  SELECT e.PARPRT_02,e.COMPRT_02,e.QTYPER_02
      来自dbo.Product_Structure AS e
      INNER JOIN BOM as d
          ON e.PARPRT_02 = d.COMPRT_02
  )

  SELECT *
  从BOM;