我有两张桌子,一张叫做剧集,另一张叫得分。剧集表格包含以下列:
id |号码|标题|描述|型
得分表包含以下列:
id | userId | showId |得分
这个想法是用户会评价节目。每次用户对节目进行评级时,都会在评分表中创建一个新行(如果已存在则更新)。当我列出节目时,我会平均该节目ID的所有分数,并将其显示在节目名称旁边。
我需要做的是根据平均评分对节目进行排序。我看过加入表格,但还没有真正弄明白。
由于
答案 0 :(得分:2)
要订购结果,请使用和ORDER BY
子句。您可以按生成的列进行排序,例如AVG
等聚合函数的结果。
SELECT e.title, AVG(s.score) AS avg_score
FROM episodes AS e
LEFT JOIN scores AS s ON e.id=s.showId
GROUP BY e.id
ORDER BY avg_score DESC;
答案 1 :(得分:0)
SELECT AVG(scores.score) FROM episodes LEFT JOIN scores ON scores.showId = episodes.id GROUP BY episodes.id
答案 2 :(得分:0)
SELECT episodes.*, AVG(score.score) as AverageRating FROM episodes
INNER JOIN score ON (episodes.id = score.showId)
GROUP BY episodes.id
ORDER BY AVG(score.score) DESC