我正在处理三个表,基本上,一个是物料清单,一个包含零件库存,最后一个包含工作订单或作业。我试图找出是否有可能有一个相关的子查询,它可以使用来自外部查询的值执行数学运算。这是我正在尝试做的一个例子:
SELECT A.work_order,A.assembly,A.job_quantity,
(SELECT COUNT(X.part_number)
FROM bom X
WHERE X.assembly = A.assembly
AND (X.quantity_required * A.job_quantity) >= (SELECT Y.quantity_available FROM inventory Y WHERE
Y.part_number = X.part_number)) AS negatives
FROM work_orders A
ORDER BY A.assembly ASC
我试图找出对于给定的工作订单,是否有我们没有足够的零件来构建组件。我目前收到“错误关联字段”错误。是否可以在单个查询中执行此类操作?
尝试将子查询移动到连接,如下所示:
SELECT a.work_order, a.assembly, a.job_quantity, n.negatives
FROM work_orders a JOIN (SELECT x.part_number, COUNT(x.part_number) as negatives
FROM bom x JOIN work_orders b
ON x.assembly = b.assembly
WHERE (x.quantity_required * b.job_quantity) >= (SELECT y.quantity_available
FROM inventory y WHERE
y.part_number = x.part_number)
GROUP BY x.part_number) n
ON a.part_number = n.part_number
ORDER BY a.assembly ASC
或者用子查询创建一个临时游标,然后用它来连接主表。希望这可以帮助。
路易斯
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句