为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 codeigniter 查询获取每个产品的平均评分?

如何使用 codeigniter 查询获取每个产品的平均评分?

PHP
qq_笑_17 2023-10-21 17:17:41
我有评级表,其中对用户给出的每个产品进行评级,我正在检索所有评级记录,但同时我想获得基于每个产品的平均评级,但我无法获得输出询问 :$this->db->select('ratings.*');$this->db->select('select AVG(ratings) as avg_rating from ratings group by product_id');$this->db->from('ratings');$this->db->join('users','users.id=ratings.user_id');$this->db->get()->result();评级表id   user_id product_id  rating  1      4         1         4 2      5         2         43      6         1         24      7         4         4预期输出:id   user_id product_id  rating          avg rating1      4         1         4               3 2      5         2         4               43      6         1         2               34      7         4         4               4
查看完整描述

1 回答

?
梦里花落0921

TA贡献1772条经验 获得超5个赞

使用左连接和选择平均值从表ratings获取数据。


Codeigniter 的join () 函数允许您编写选择部分而不是表名,但您需要将其放在括号中:


$this->db->select('t1.*, t2.avg_rating, t3.*');

$this->db->from('ratings t1');

$this->db->join('

                  (select product_id, avg(rating) as avg_rating 

                   from ratings 

                   group by product_id)  t2','t2.product_id=t1.product_id','left'

                );

$this->db->join('users t3','t3.id=t1.user_id','left'); 

$this->group_by('t1.userid')

$this->db->get()->result();

生成:


SELECT t1.*, t2.avg_rating, t3.*

FROM ratings t1

left join 

        (select product_id, avg(rating) as avg_rating from ratings group by product_id)  t2 

    on t2.product_id=t1.product_id

left join users t3

    on t1.user_id = t3.id

group by t1.user_id

并按照您的预期输出。


查看完整回答
反对 回复 2023-10-21
  • 1 回答
  • 0 关注
  • 55 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信