2013-06-01 53 views
2

我在問題和得分之間有一對多的關係。我的表設置爲:SQL - 獲取所有一對多關係的平均得分

Table Question: 
    id int auto_increment primary key, 
    question varchar(255); 

Table Score: 
    id int auto_increment primary key, 
    score float, 
    question_id int foreign key 

對於每一個問題,我想找到的平均成績,所以我需要question從問題表,我需要計算平均值。

我想:

SELECT Question.question, SUM(Score.score)/COUNT(Score.question_id) FROM `Question` INNER JOIN `Score` WHERE Question.id = Score.question_id; 

但它只是返回的第一個問題和平均值。你可以在my SQLFiddle link看到它的行動。

我需要修改它以返回所有問題及其平均分數?

回答

3

你忘了添加GROUP BY條款,

SELECT ... 
FROM... 
GROUP BY Question.question 

,你也可以交替爲迅速回答使用AVG()

SELECT Question.question, 
     AVG(Score.score) AS average 
FROM Question INNER JOIN Score 
      ON Question.id = Score.question_id 
GROUP BY Question.question 
+0

真棒,謝謝! :) –

+1

也請使用'JOIN'的標準語法。更多關於此鏈接:[SQL加入的可視化表示](http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html) –

+0

啊,是啊...沒有意識到我遺漏了'ON' –

相關問題