物料清单查询

时间:2012-03-13 04:57:54

标签: asp.net sql recursion

我目前在我的数据库中有以下两个表:

Table: SampleProducts   
SampleProductsId (PK)   Name
1                             A
2                             B
3                             C
4                             D
5                             E
6                             F
7                             G

Table: SampleProductsBoms           
SampleProductsBomId (PK)    ParentId (FK)   ChildId (FK)    Quantity
1                              1             2             3
2                              2             3             4
3                              4             6             2

ParentId和ChildId都引用了SampleProductsId

在英语中,我可以确保我们都在同一页面上:  产品A由B中的3个组成  产品B由4个C组成  产品D由2个F

组成

我想创建一个Stored Procedure / LinQ语句或者我可以在我的MVC 3 c#Web应用程序中使用的东西,它将为我提供以下表结构/对象...

示例:

Recursive Query to find the components of B
ProductId Name Quantity
   3        C     4
   6        F     2

这可能会非常深入,所以我确实需要递归!

1 个答案:

答案 0 :(得分:0)

Common Table Expression

或者我认为以下查询也可以解决您的目的

select components.SampleProductId as productid,components.Name as Name,Quantity
from SampleProductsBOM bom
inner join SampleProducts products
on products.ParentId=bom.ParentId
inner join SampleProducts components
on components.SampleProductId=bom.ChildId
where products.Name='B'