Sql 如何使用update和sum()函数更新ms access数据库表?

Sql 如何使用update和sum()函数更新ms access数据库表?,sql,Sql,我的access数据库中有两个表 表1(ID、产品名称、数量、余数) 表2(ID、产品名称、销售额) 使用“产品名称”将这些表关联在一起,我如何使用“数量表第一个表-第二个表的总和(销售)”值更新表1中的“提醒”通过获取总和()执行更新联接 UPDATE a SET a.remainder = x.SaleTotal FROM table1 a INNER JOIN (SELECT productname, SUM(sales) AS SaleTotal

我的access数据库中有两个表

  • 表1(ID、产品名称、数量、余数)
  • 表2(ID、产品名称、销售额)

使用“产品名称”将这些表关联在一起,我如何使用“数量表第一个表-第二个表的总和(销售)”值更新表1中的“提醒”

通过获取
总和()执行更新联接

UPDATE a 
SET    a.remainder = x.SaleTotal
FROM   table1 a 
       INNER JOIN (SELECT productname, SUM(sales) AS SaleTotal 
                   FROM TABLE2 GROUP BY productname) x 
       ON a.productname = x.productname;

当您说它由productname字段链接时,请在表1中告诉我这是一个外键。由于表2中已经有一个ID,因此没有理由不将该ID用作表1中的外键

如果要这样做,更新将非常简单:

update table1 
set table1.quantity = table1.quantity - SUM( table2.sales ) 
from table1
inner join table2 on table1.productID = table2.productID
where table1.productID = 1;

因为MS Access中的更新查询需要状态,所以不能在聚合查询上使用直接内部联接。考虑使用MS访问函数:

UPDATE table1
SET table1.remainder = table1.quantity - 
    DSum("Sales", "table2", "ProductName='" & table1.ProductName & "'")

非常感谢您的回答..我没有使用ID,因为数据库包含许多表--不仅仅是两个表,我需要使用Productname来创建关系,但为了简化我的问题,我只使用了两个表..请接受我的问候