2017-08-05 7 views
1

私はマイクロソフトのアクセスを使用していますが、以下に示す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]; 
+0

保存計算データ、特に集計データは、通常は悪い考えである着信/発信のトランザクションの記録を保存し、必要なときにネットバランスを計算し確認します。http:。。/ /allenbrowne.com/AppInventory.html – June7

+0

入手したエラーは何ですか? – ChrisM

+0

クエリ式の構文エラー –

答えて

0

TEMPテーブルを使用して、2番目と3番目のテーブルのデータを格納できます。 1)Student IDとCreditsの2つの列を持つ別の4番目の表(Temp)を作成します。 )

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更新するために開始します:2)このスクリプトを実行

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

関連する問題