0

所以我有一个正在处理的查询,我无法让它做我想做的事。我需要它来返回构成产品的所有部件,如果它有一个完整的订单与之关联的 partLotNumber,我想在另一列中得到它(即左连接)。我可以获得构成产品的所有部件的查询,并且我可以获得已完成产品中的所有部件编号,但我无法同时完成这两项工作。到目前为止,我所有的尝试都使用每个 partLotNumber 输出每个部分。

此查询返回构成产品的所有部分

SELECT orders.orderNumber, orderline.orderlineID, products.productID, assembly.assemblyID, assemblyparts.partID, parts.name
FROM orders
LEFT JOIN orderline ON orders.orderNumber = orderline.orderNumber
LEFT JOIN products ON orderline.productID = products.productID
LEFT JOIN assemblyproduct ON products.productID = assemblyproduct.productID
LEFT JOIN assembly ON assemblyproduct.assemblyID = assembly.assemblyID
INNER JOIN assemblyparts ON assemblyproduct.assemblyID = assemblyparts.assemblyID
LEFT JOIN parts ON assemblyparts.partID = parts.partID
WHERE orders.orderNumber = 1024

此查询返回成品的所有部分。

SELECT orders.orderNumber, orderline.orderlineID,  products.productNumber, assemblyproduct.assemblyID, lotrecord.finishedLotNumber, assemblylot.assemblyLotNumber, assemblyline.assemblylineID, assemblyline.partLotNumber, parts.name
FROM orders
LEFT JOIN orderline ON orders.orderNumber = orderline.orderNumber
LEFT JOIN products ON orderline.productID = products.productID
LEFT JOIN assemblyproduct ON products.productID = assemblyproduct.productID
LEFT JOIN assembly ON assemblyproduct.assemblyID = assembly.assemblyID
LEFT JOIN lotrecord ON products.productID = lotrecord.productID
LEFT JOIN finishedlotinventory ON lotrecord.finishedLotNumber = finishedlotinventory.finishedLotNumber
LEFT JOIN assemblylot ON finishedlotinventory.assemblyLotNumber = assemblylot.assemblyLotNumber
LEFT JOIN assemblyline ON assemblylot.assemblyLotNumber = assemblyline.assemblyLotNumber
LEFT JOIN inventory ON assemblyline.partLotNumber = inventory.partLotNumber
LEFT JOIN parts ON inventory.partID = parts.partID
WHERE orders.orderNumber = '1038'

基本上我想要做的是选择一个订单号,它返回所有订单行,该订单行中的产品,然后是组成该产品的组件,然后是组成组件的零件,如果它已提交到流水线表我要返回与该订单关联的 partLotNumber。到目前为止,我只能得到完整的订单来展示,我不能得到不完整的订单。

这是我的数据库图的图片,为了阅读清晰省略了一些表格。 数据库图

4

0 回答 0