【问题标题】:Display items from mysql db by avg rating - php按平均评级显示来自 mysql db 的项目 - php
【发布时间】:2018-07-13 08:43:15
【问题描述】:

我正在制作一个带有电影评分系统的电影数据库,我想显示平均评分最高的电影。

这是我的数据库的结构:

表 movies_ratings : id | movie_id (themoviedb api) |评分 表电影: id |电影ID |标题 |概览 |流派 |海报路径 |人气(themoviedb api)

我的模型中有我的班级评分:

class Rating extends Connection {

public function rate($id, $value) {
$sql = 'INSERT INTO `movies_ratings` (`movie_id`, `rating`) VALUES(?, ?)';
$params = [$id, $value];
$req = $this->query($sql, $params);
}

public function avg($id) {
$sql = 'SELECT AVG(`rating`) AS avg FROM `movies_ratings` WHERE `movie_id` ='.$id;
$params = [$id];
return $req = $this->query($sql, $params, 'one');
}
}

我做了一个按受欢迎程度显示电影的功能,它可以工作:

  public function getPopularMovies($offset = null) {
$sql = 'SELECT * FROM `movies` ORDER BY `popularity` DESC';
if ($offset) $sql .= ' LIMIT '.$offset;
return $this->query($sql, null, 'all');
}

但我未能制作按评分显示电影的功能。你能帮帮我吗?

谢谢

【问题讨论】:

    标签: php mysql average


    【解决方案1】:

    在数据库方面,您可能希望一次获取整个电影列表以及平均评分。为了便于阅读,我将它分成几行。

    SELECT movies.*, AVG(movie_ratings.rating) AS rating
    FROM movies
    LEFT JOIN movie_ratings ON movies.id = movie_ratings.id
    GROUP BY movies.id
    ORDER BY rating DESC
    

    【讨论】:

      猜你喜欢
      • 2013-04-04
      • 2023-03-17
      • 2011-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多