2014-04-07 39 views
0

我有一個使用MySQL的問題。我有兩張桌子,一張是遊戲名稱,另一張是遊戲的評分。我希望能夠按名稱搜索遊戲並查看每場比賽的平均評分。到目前爲止,我得到了平均評分,但我只能看到1場比賽的評分,而不是多場比賽。這裏是我的查詢到目前爲止:在MySQL中取得平均值

SELECT games.name, CAST(AVG(reviews.rating) as decimal(6, 1)) AS average_rating 
    FROM games 
    JOIN reviews 
    ON games.id = reviews.game 
    WHERE games.name LIKE '%spider%' 
    AND type = '7' 
    AND rating != 0 

我希望你們中的一些聰明的人能幫助我這個! 謝謝,羅伯特

回答

1

你必須使用在適當的領域GROUP BY子句,以獲得平均爲一組,否則將計算所有行的平均水平。我想這是games.id,但取決於你的表架構。

SELECT games.name, CAST(AVG(reviews.rating) as decimal(6, 1)) AS average_rating 
FROM games 
JOIN reviews 
ON games.id = reviews.game 
WHERE games.name LIKE '%spider%' 
AND type = '7' 
AND rating != 0 
GROUP BY games.id; 

瞭解更多關於所謂aggregate functions

1

您必須使用GROUP BY games.name分隔出不同的名稱。問題是AVG是摺疊結果的摘要函數。 GROUP BY打破了結果。

SELECT games.name, CAST(AVG(reviews.rating) as decimal(6, 1)) AS average_rating 
FROM games 
    JOIN reviews ON games.id = reviews.game 
WHERE games.name LIKE '%spider%' AND type = '7' AND rating != 0 
GROUP BY games.name