2017-08-05 73 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

相關問題