代码之家  ›  专栏  ›  技术社区  ›  addohm

用count语法更正更新

  •  1
  • addohm  · 技术社区  · 6 年前

    我试图用一个查询更新多个键控记录,但我不知道正确的语法。

    这是我的尝试:

    UPDATE hL
    SET hL.[QUANTITY_COMPLETED] = (SELECT COUNT([SERIAL_NUMBER]) 
                                   FROM [dbo].[ORDER_ITEMS] oO
                                   INNER JOIN [dbo].[JOB_HISTORY] jH ON jH.[ORDER_NUMBER] = Oo.[ORDER_NUMBER]
                                   INNER JOIN [dbo].[JOB_HISTORY_LINE] hL ON hL.[LINE_NUMBER] = oO.[LINE_NUMBER]
                                   WHERE oO.[LINE_NUMBER] = hL.[LINE_NUMBER])
    FROM [dbo].[JOB_HISTORY_LINE] hL
    

    问题是: 以上将坚持 SUM 中的项 ORDER_ITEMS 在所有条目中 JOB_HISTORY_LINE . 这不正确。

    工作记录行 只包含每个的信息 LINE_NUMBER 关联到 ORDER_NUMBER . 中的每个项目 订购物品 有关联的 行号 订单号 可以通过引用 JOB_HISTORY ,其中包含 订单号 .

    目标: 每行输入 JOB_HISTORY_LINES 应显示关联的 COUNT 属于 SERIAL_NUMBERS 来自 订购物品 表。

    请帮我把这件事理顺一下,这样我就可以知道我为什么要搞砸了:)

    2 回复  |  直到 6 年前
        1
  •  1
  •   Gordon Linoff    6 年前

    也许您要查找的是一个相关的子查询:

    UPDATE hL
        SET hL.[QUANTITY_COMPLETED] = (SELECT COUNT([SERIAL_NUMBER])
                                       FROM [dbo].[ORDER_ITEMS] oO INNER JOIN
                                            [dbo].[JOB_HISTORY] jH
                                            ON jH.[ORDER_NUMBER] = Oo.[ORDER_NUMBER]
                                       WHERE oO.[LINE_NUMBER] = hL.[LINE_NUMBER]
                                      )
        FROM [dbo].[JOB_HISTORY_LINE] hL;
    
        2
  •  0
  •   J a c k    6 年前
    UPDATE [hL]
    SET [hL].[QUANTITY_COMPLETED]=[oo].[Total]
    FROM [dbo].[JOB_HISTORY_LINE] [hL]
    LEFT JOIN
     (
     SELECT [oO].[LINE_NUMBER]
           ,Count([SERIAL_NUMBER]) AS [Total]
     FROM [dbo].[ORDER_ITEMS] AS [oO]
     INNER JOIN [dbo].[JOB_HISTORY] AS [jH]
           ON [jH].[ORDER_NUMBER]=[Oo].[ORDER_NUMBER]
     INNER JOIN [dbo].[JOB_HISTORY_LINE] AS [hL]
           ON [hL].[LINE_NUMBER]=[oO].[LINE_NUMBER]
     GROUP BY [oO].[LINE_NUMBER]
     ) AS [OO]
     ON [oO].[LINE_NUMBER]=[hL].[LINE_NUMBER];