我有 2 个表 Product & Product_BOM () 其中 Product 是主表, Product_BOM 包含产品的零件(物料清单)。请注意,零件 (BOM) 是另一个产品。
表产品
Product_id,Product_name,Product_type ..
表产品_BOM
Product_Bom_ID, Product_id
上表 Product.Product_id = Product_BOM.Product_id
如您所见,BOM 是另一种产品,它可能有许多其他产品作为 BOM 这可以是更深层次的。现在的问题是,当销售主要产品时,我想减少其 BOM 的数量(在所有更深的层次上,我不能假设深度)。如果我只有 2 个级别,那么我可以轻松地加入同一张表来达到结果。
SELECT .....
FROM
Product P //Main Product
LEFT JOIN Product_BOM BOM on BOM.Product_id = P.Product_id // Get its BOM
JOIN Product pLevel1 on pLevel1.Product_id = BOM.Product_id // Get BOM's Product name etc
基本图如下
CAR (Main Product)
---TYRE (BOM of LEVEL 1)
-------RUBBER (BOM of LEVEL 2)
---SEAT (BOM of LEVEL 1)
-------LEATHER(BOM of LEVEL 2)
---ENGINE (BOM of LEVEL 1)
-------RPC-AM1(BOM of LEVEL 2)
----------R-18(BOM of LEVEL 3)
----------R-19(BOM of LEVEL 3)
-------CQR-DDF1.0(BOM of LEVEL 2)
在上述所有 CAR 的部分是另一个产品。现在我有了父产品,我如何让所有子项目在更深层次上属于它?
有没有其他方法可以在没有 JOIN 的情况下达到同样的效果?