Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用JOIN-in-Codeigniter从两个表中获得平均值_Php_Mysql_Codeigniter_Codeigniter 2 - Fatal编程技术网

Php 如何使用JOIN-in-Codeigniter从两个表中获得平均值

Php 如何使用JOIN-in-Codeigniter从两个表中获得平均值,php,mysql,codeigniter,codeigniter-2,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`'); 发现两个问题: 你的代码不正确。Codeigniter希望在创建查

我有一个如下所示的表结构,我想获得每个帖子的平均评分,因为我正在编写以下查询以连接并获取记录,但它给出了语法错误:

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

  • 你的代码不正确。Codeigniter希望在创建查询时使用某种格式,请遵循以下步骤进行更深入的理解

  • 你得到的是平均评分,但你没有分组,因此只能得到一个结果,而不是每个帖子都有一个结果

以下是我将如何重写您的模型方法:

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();
}

您不需要使用GROUPBY并执行如下使用$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');