在另一个表php mysql中按值排序

时间:2011-05-08 09:44:30

标签: php mysql sorting

我有两张桌子,一张叫做剧集,另一张叫得分。剧集表格包含以下列:

  

id |号码|标题|描述|型

得分表包含以下列:

  

id | userId | showId |得分

这个想法是用户会评价节目。每次用户对节目进行评级时,都会在评分表中创建一个新行(如果已存在则更新)。当我列出节目时,我会平均该节目ID的所有分数,并将其显示在节目名称旁边。

我需要做的是根据平均评分对节目进行排序。我看过加入表格,但还没有真正弄明白。

由于

3 个答案:

答案 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)

你是对的。你必须加入这些表,然后在'episodes'表的'id'列上使用GROUP BY。然后你就可以在'得分'表的'得分'专栏上使用AVG()函数。

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