【问题标题】:SQL Math Operation In Correlated Subquery相关子查询中的 SQL 数学运算
【发布时间】:2018-11-07 18:21:41
【问题描述】:

我正在使用三张表,基本上,一张是物料清单,一张包含零件库存,最后一张包含工作订单或作业。我试图找出是否有可能有一个相关的子查询可以使用外部查询中的值执行数学运算。这是我正在尝试做的一个示例:

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

对于给定的工作订单,我试图找出我们是否没有足够的零件来构建装配体。我目前收到“错误关联字段”错误。是否可以在单个查询中执行这种操作?

【问题讨论】:

  • 能否在派生表中进行计算,然后在 FROM 子句中加入主表?
  • @TamarE.Granor - 你介意举一个你在想什么的例子吗?我似乎无法弄清楚它如何与派生表一起使用。
  • 我想我必须更好地理解您的数据。但问题基本上是您是否可以通过查询创建一些包含您需要的数据的中间表,然后将它们连接到主表。我不确定您是否可以查看您的示例,但首先要尝试在一系列查询中完成任务。如果您能做到这一点,请在此处发布,我们可以帮助您将其转换为单个查询。

标签: sql subquery visual-foxpro


【解决方案1】:

尝试将子查询移动到连接中,如下所示:

   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

或者用子查询创建一个临时游标,然后用它来连接主表。 希望这会有所帮助。

路易斯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多