Product と Product_BOM () の 2 つのテーブルがあります。ここで、Product はマスター テーブルで、Product_BOM には製品の部品 (部品表) が含まれています。部品 (BOM) は別の製品であることに注意してください。
テーブル製品
製品 ID、製品名、製品タイプ ..
テーブル Product_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 なしで同じことを達成する他の方法はありますか?