2017-08-05 76 views
1

我正在使用Microsoft Access,并且总共有3个表格:Credits,Orders和Books,如下所示。我需要创建一个更新查询,根据他们订购的书籍以及每本书的相应信用额度更新每个学生的现有信用数量。更新查询以基于另一个表中的值更改一个表中列的现有值

例如,学生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]; 
+0

节能计算的数据,尤其是汇总数据通常是一个坏主意除呼入/呼出的交易记录,并在需要时再计算净余额仔细审查http:。/ /allenbrowne.com/AppInventory.html – June7

+0

你得到的错误是什么? – ChrisM

+0

查询表达式中的语法错误 –

回答

0

您可以尝试使用TEMP表来存储来自第2和第3表的数据;这样做:1)创建另一个第4个表格(即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)“Operation must use an updateable query" error in MS Access; 2)MS Access database (2010) how to create temporary table/procedure/view from Query Designer

相关问题