2011-05-19 91 views
1

我有這樣的MS Access查詢計算平均:問題與MS Access和一列

SELECT DISTINCT 
    Career.careerId, Student.studentName, Avg([Student-Topic].grade), Career.careerName 
FROM 
    Career INNER JOIN 
     (
     (Student INNER JOIN [Student-Topic] 
      ON Student.studentId = [Student-Topic].studentId) 
       INNER JOIN [Student-Career] 
        ON Student.studentId = [Student-Career].studentId) 
     ON Career.careerId = [Student-Career].careerId 
WHERE 
    (((
     [Student-Career].careerId)=[Career].[careerId]) AND 
     (([Student-Topic].studentId)=[Student].[studentId])); 

沒有AVG函數的查詢工作正常,但是當我把它,它打破了......

什麼是我的錯誤?

+4

什麼是「發生故障」呢?錯誤信息會非常有用。既然你正在使用一個聚合函數,你很可能需要一個GROUP BY子句。 – 2011-05-19 18:52:46

回答

3

必須使用聚合函數時,將數據分組。

  • 即添加GROUP BY子句。
4

這個查詢是否表示你正在尋找的平均數是什麼?

SELECT studentId, Avg(grade) AS average_grade 
FROM [Student-Topic] 
GROUP BY studentId; 

如果是這樣,你可以將其保存爲一個單獨的查詢,並與您的原始查詢加入。或者將其作爲子查詢包含在原始查詢中。

編輯:哎呀。一個子查詢可能會產生問題,因爲表名必須被括起來......這可能會混淆Access的查詢設計器,當它在子查詢周圍使用方括號時。最好給表格一個不需要包圍的名稱...... Student_Topic而不是Student-Topic。