我正在试图弄清楚如何组合一个SQL语句,让我根据其物料清单在我们的数据库中找到最终项目。我想你可以说这就像是反向BOM查询问题。
我的表结构非常简单。
-End-item table
-Component table
-Linking table to tie together multiple components to an end item record.
我拥有的数据只是组件列表,我想找到最终项目。由于每种物料清单都是唯一的,因此必须完美匹配物料清单,即组件的确切数量以及与组件SKU编号的精确匹配。在某些情况下,2个最终产品可能会使用所有相同的组件,但其中一个只使用一个或多个额外的部分,使最终产品的SKU编号不同,因此必须考虑到这一点。也就是说,它必须完美匹配BOM。
如果不是一个彻头彻尾的答案,有人至少可以引导我找到正确的道路吗?
------更新---------- 表结构就是这样的。
ManufacturedPart
,--------------------,
| ID | PART_NUM |
|--------------------|
| 1 | V3175-01 |
| 2 | V3367-01 |
| 3 | V3988-01 |
| 4 | V3175-CV |
`--------------------`
Component
,--------------------,
| ID | COMP_NUM |
|--------------------|
| 1 | V3175 |
| 2 | V3367 |
| 3 | V3369 |
| 4 | V3114 |
| 5 | V3370 |
| 6 | V4060 |
| 7 | V3550 |
| 8 | V3988 |
`--------------------`
ManufacturedComponent
,-------------------------------------------------,
| ID | MANUFACTURED_PART_ID | COMPONENT_ID |
|-------------------------------------------------|
| 1 | 1 | 1 |
| 2 | 1 | 4 |
| 3 | 1 | 6 |
| 4 | 2 | 2 |
| 5 | 2 | 3 |
| 6 | 2 | 5 |
| 7 | 2 | 7 |
| 8 | 3 | 1 |
| 9 | 3 | 8 |
| 10 | 4 | 1 |
| 11 | 4 | 4 |
`-------------------------------------------------`
假设我只有要搜索的COMP_NUM(组件编号),我希望匹配包含该组件精确列表的ManufacturedPart。
所以一些例子:如果我有组件V3175,V3114和V4060,它应该匹配回V3175-01制造的部件。但是,如果我只有V3175和V3114组件,它应该与V3175-CV制造的部件匹配。如果我有V3367,V3369,V3370和V3550组件,它应与制造的V3367-01匹配。
我还没有编写任何SQL,因为我不确定如何解决问题..