从同一个表中获取子产品

时间:2016-01-26 21:50:04

标签: sql-server tsql join

我有两张表,table1包含最终产品和产品部件,table2包含table1.productidpartsid之间的映射。即。

table1
--------------------------------------------
productid    descrip    code   cost  ....etc
1235         product A   07     12.5 ......
789          labor       03     2.5  ....
839          part1       03     5    ....

table2看起来像

table2
--------------------------------------------
productid    partsID    quantity
1235         789          1
1235         839          2
2341         2315         2
.....

我需要选择符合特定代码的最终产品,然后从零件表中拉出零件并显示如下:

Resuls
--------------------------------------------
productid    descrip    code   partsID    cost ....etc
1235         product A   07    789        2.5  ......
1235         product A    03    839       5    ....
.......

基本上对于每个最终产品,将零件排列在正确的成本和所有其他与零件相关的细节而不是最终产品。

感谢您的任何帮助。

2 个答案:

答案 0 :(得分:0)

您是否可以在ProductID字段中加入两个表:

SELECT * FROM 
dbo.TABLE1 o INNER JOIN
dbo.TABLE2 t ON o.ProductId = t.ProductId
WHERE o.code = 7
OR o.code = 3
etc ... whatever additional criteria you need

如果您还需要加入partsID,您可以说

AND o.PartId = t.partsId

答案 1 :(得分:0)

看起来您希望得到类似此查询的内容,但我不确定代码= 07,您已在示例中指定。对于这两个部分,代码必须为03。

SELECT 
    prd.productid,
    prd.descrip,
    prt.code,
    prdprt.partsID,
    prt.cost,
    ....etc
FROM table1 prd
JOIN table2 prdprt ON prd.productid=prdprt.productid
JOIN table1 prt ON prdprt.partsID=prt.productid
WHERE prd.code in ('07', ...othecodes) --if you filter by product's code
    OR prt.code in ('03', ...othecodes) --if you filter by parts's code