使用一个表中的字段计数来更新另一个表中的字段

时间:2019-09-02 08:57:07

标签: sql ms-access

我在Access数据库中有2个表:[Importing GTRX][Cells_2G]。我想用相关[cells_2G].TRX900条记录的数量更新[importing GTRX]。为此,我编写了两个SQL,但它们未能更新。

第一个代码:

UPDATE
  [Importing GTRX] INNER JOIN Cells_2G 
  ON [Importing GTRX].[Cell Name] = Cells_2G.[Cell Name]
SET
  cells_2g.trx900=Count([importing gtrx].frequency)
WHERE 
 (
  (
   [Importing GTRX].frequency>=1 
   And 
   [Importing GTRX].frequency<=124
  ) 
 ) 
 AND 
 [Importing GTRX].[active status]="activated"
;

当我运行此查询时,它说:

  

您的查询未将指定的表达式TRX900作为聚合函数的一部分

当我添加group by [cells_2g.trx900]时,我遇到另一个错误。

第二个代码:

UPDATE
  Cells_2G inner join
  (
   SELECT [Cell Name], count(*) AS TRX900
   FROM [importing GTRX]
   WHERE 
    [Active status]="activated" 
    AND [Importing GTRX].frequency>=1 
    And  [Importing GTRX].frequency<=124
   GROUP BY [cell name]
  ) AS TT ON TT.[Cell Name] = Cells_2G.[Cell Name]
SET
  cells_2g.trx900=TT.TRX900
;

当我尝试运行此程序时,Access会说:

  

操作必须使用可更新的查询。

现在我该怎么办?

您的帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

除了加入之外,您还可以尝试使用在线子查询来计算目标值,例如:

UPDATE [Cells_2G]
SET [TRX900] = (
    SELECT COUNT(*) 
    FROM [Importing GTRX]
    WHERE (
        [Importing GTRX].[Cell Name] = [Cells_2G].[Cell Name]
        AND [Importing GTRX].frequency >= 1 
        AND [Importing GTRX].frequency <= 124
    )
)