
让我们假设我有4张桌子,如上面所示。BOM是指材料清单。如您所见,生产订单1缺少了BOM (ITEM3)中的1项,而生产订单2缺少了其他项(ITEM1)。给定一个BOM代码,我如何获得每一个缺少一个项目的生产订单,这是哪一个项目?其结果可能是:
ID | Item
---|------
1 | ITEM3
2 | ITEM1发布于 2017-05-12 05:17:51
这个怎么样:
SELECT id, item
FROM production_order po
JOIN bom_items bi ON po.code = bi.father
WHERE NOT EXISTS
(SELECT 1 FROM production_oder_items poi
WHERE poi.id = po.id
AND poi.item = bi.item)
AND po.code = 'CAR01';发布于 2017-05-12 01:07:33
其思想是确定所有的生产订单项目组合。然后使用left join来确定不存在的:
select po.Production_Order, bi.item
from Production_Order po cross join
BOM_Items bi left join
Product_Order_Items poi
on poi.Production_order = po.id and
poi.Item = bi.Item
where poi.Item is null;https://stackoverflow.com/questions/43927778
复制相似问题