繁体   English   中英

更新查询以基于另一个表中的值来更改一个表中列的现有值

[英]Update query to change existing values for a column in one table based on values from another table

我使用的是Microsoft Access,共有3个表:贷方,订单和帐簿,如下所示。 我需要创建一个更新查询,根据他们订购的书和每本书的相应学分金额来更新每个学生的现有学分数。

例如,学生B-17以24个学分开始,但是在更新查询之后,应将学生的学分更改为32。

学分表

Student ID    Number of Credits
B-17          24
F-59          30

订单表

Student ID    Book ID
B-17          101
B-17          102
F-59          101
F-59          105

书表

Book ID    Book Title    Credits
101        English I     3
102        Accounting    5
105        Calculus      5

这是我正在尝试的方法,但是我在Access中不断收到语法错误。

UPDATE Credits c
SET [Number of Credits] = [Number of Credits] + (SELECT SUM(Credits)
FROM Orders o, Books b ON
o.[Book ID] = b.[Book ID] WHERE 
c.[Student ID] = o.[Student ID])
WHERE c.[Student ID] = o.[Student ID];

您可以尝试使用TEMP表存储第二个和第三个表中的数据。 这样做:1)用两列创建另一个第四表(即Temp):Student ID和Credits; 2)运行此脚本:

SELECT o.[Student ID], sum (b.Credits) as Credits INTO Temp 
FROM books b INNNER JOIN orders o
on b.[Book ID] = o.[Book ID] 
GROUP BY o.[Student ID];

3)开始更新:

UPDATE Credits c, Temp t set c.[Number of Credits] = c.[Number of Credits] + t.Credits
WHERE c.[Student ID] = t.[Student ID];

4)保存并完成!

有用:1) MS Access中的操作必须使用可更新的查询”错误 2) MS Access数据库(2010)如何从查询设计器创建临时表/过程/视图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM