如何在Codeigniter中使用JOIN从两个表中获取AVERAGE

时间:2015-11-16 14:01:19

标签: php mysql codeigniter codeigniter-2

我有一个如下所示的表结构,我希望获得每个帖子的平均评级,因为我正在编写以下查询以加入并获取记录,但它会出现语法错误:

$this->db->select($query = $this->db->query('SELECT * FROM post,AVG(`rating`) AS `avg_rating` JOIN review ON `post`.`id` = `review`.`post_id`');

enter image description here

2 个答案:

答案 0 :(得分:2)

发现了两个问题:

  • 您的代码不正确。 Codeigniter在创建查询时需要特定格式,请按照manual here进行更深入的了解。

  • 您获得了平均评分,但您没有分组,因此以一个结果结束,而不是每个帖子一个结果。

这就是我重写模型方法的方法:

function getRatingInfo(){
    $this->db->select("*, AVG(rating) AS avg_rating");
    $this->db->from("post p");
    $this->db->join("review r", "p.id=r.post_id");
    $this->db->group_by("post_id");
    $query = $this->db->get();
    return $query->result();
}

答案 1 :(得分:0)

你使用group by并执行这样的使用$ this-> db-> query("你的sql");

$this->db->query('select rating.post_id,avg(rating.rating) as `avg_rating` from rating,post where rating.post_id=post.id group by rating.post_id');