2017-05-11 15 views
0

私は自分のDBとしてアクセスして、SchoolGradeの各受験者の受験件数を合計しようとしています。いくつかの基本的な情報:SchoolGradeには多くの学生がいます、学生はテストの試みは主題別に記録されています。私は、各SchoolGradeの科目で取られた合計試験の試行を更新したいと思っています。以下 は私のクエリです:Access Error SQL with Sum Error

UPDATE [SchoolGrade] AS SG 
INNER JOIN [Student] AS S ON S.schoolgrade_id = SG.id 
SET SG.[Total Reading Test Attempts] = SUM(S.[Reading Test Attempts]), 
SG.[Total Math Test Attempts] = SUM(S.[Math Test Attempts]), 
SG.[Total Science Test Attempts] = SUM(S.[ScienceTest Attempts]); 

私は、次のエラーを取得しています:

You tried to execute a query that does not include the specified expression 'Total Reading Test Attempts' as part of an aggregate function.

が、私はこのエラーをどのように修正すればよいですか?

答えて

1

ここでは、アップデートを実行して後でクリーンアップするための一連のクエリを示します。ゴードン・リノフの答えと、Use SELECT inside an UPDATE queryのすべての返済額。

テーブルを作成します。クエリ式で 構文エラー(演算子がありません) ':私は次のエラーを取得する

DROP TABLE TempTable 
1

JOINを実行する前に集約する必要があります。私はこれがMS Accessで動作すると思います。

UPDATE SG 
    SET [Total Reading Test Attempts] = s.sum_reading, 
     [Total Math Test Attempts] = s.sum_math, 
     [Total Science Test Attempts] = s.sum_science 
    FROM [SchoolGrade] AS SG INNER JOIN 
     (SELECT s.schoolgrade_id, 
       SUM([Reading Test Attempts]) as sum_reading, 
       SUM([Math Test Attempts]) as sum_math, 
       SUM([Science Test Attempts]) as sum_science 
      FROM [Student] AS s 
      GROUP BY s.schoolgrade_id 
     ) s 
     ON S.schoolgrade_id = SG.id 
+0

:最大

UPDATE SG SET [Total Reading Test Attempts] = s.sum_reading, [Total Math Test Attempts] = s.sum_math, [Total Science Test Attempts] = s.sum_science FROM [SchoolGrade] AS SG INNER JOIN TempTable AS s ON S.schoolgrade_id = SG.id 

クリーン:

SELECT s.schoolgrade_id, SUM([Reading Test Attempts]) as sum_reading, SUM([Math Test Attempts]) as sum_math, SUM([Science Test Attempts]) as sum_science INTO TempTable FROM [Student] AS s GROUP BY s.schoolgrade_id 

が更新を実行しs.sum_science から[SchoolGrade] AS SG INNER JOIN [学生] AS S FROM sum_science として(sum_readingとして([試験試行を読む])、 SUMをs.schoolgrade_idを選択sum_mathとして SUM([数学テスト試行])、 SUM([サイエンス試験試行]) GROUP BY s.schoolgrade_id )s ON S.schoolgrade_id = SG.id '。 – user908759

+1

's'エイリアスの' AS'がありません。また、AccessはJOINSによる更新をクエリに対して実行しません。これを試みると、 '操作で更新可能なクエリを使用する必要があります'というエラーが返されます。 [UPDATEクエリ内でSELECTを使用する](http://stackoverflow.com/questions/871905/use-select-inside-an-update-query)を参照してください。 –

+0

C Perkins作業から更新するテーブルを作成する!ありがとうございました! – user908759