2017-05-11 1 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

업데이트를 수행하고 이후에 정리할 전체 쿼리가있다. Gordon Linoff의 대답에 대한 모든 기한과 Use SELECT inside an UPDATE query.

만들기 테이블 :

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 

수행 갱신 :

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 

정리 : 나는 다음과 같은 오류 얻을

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

: 구문 오류 (누락 된 연산자) 쿼리 식을 ' s.sum_science FROM [SchoolGrade]부터 SG INNER JOIN,515,(s.schoolgrade_id를 선택 sum_science 같은 SUM() sum_math 같이 합계 ([사이언스 테스트 시도]) sum_reading 같이 합계 ([수학 테스트 시도]) [시험 슈팅 읽기 [학생] AS의 FROM 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