使用加入 codeigniter 获取产品评分计数

Get Product Rating count using join in codeigniter

我有两个 tables 一个存储产品,另一个存储所有批次的评级和评论, Product Table 中有一列名为 Batch No. 的列。我必须显示 table 中按批号排序的所有产品。每个批号都应该得到评论数。

Product Table

id    Product Name    Price    Batch No

Reviews

id    Batch No    Reviews    Rating

我想要这样的输出:

Product Name       Price   Batch No        
Product 1           200      121
Product 2           300      121
Review Count        2
Product 1           200      125
Product 2           300      125
Review Count        3

我已经编写了以下查询,但它不起作用:

$this->db->select('*,COUNT(reviews.id) AS Total')->from('product_table as product')->join('reviews as reviews', 'product.batch_no=reviews.batch_no')->get()->result();

我建议你阅读这篇文章。 https://codeigniter.com/userguide2/database/results.html

优化SQL输入

$query = $this->db->query("YOUR QUERY");

if ($query->num_rows() > 0)
{
   foreach ($query->result() as $row)
   {
      echo $row->title;
      echo $row->name;
      echo $row->body;
   }
}

至于 SQL 语法,使用这个:

SELECT p.id    , p.product_name  , p.Price , r.batch_no, r.reviews
FROM product as p
      LEFT JOIN reviews as r  
        ON r.batch_no = p.batch_no
GROUP BY p.id , r.batch_no

过分依赖 ACTIVE RECORDS 并不是一件好事。它对于简单或不太复杂的查询具有优势。

只需添加 Group by 即可

        $this->db->select('*, COUNT(r.id) AS Total');
        $this->db->group_by('p.batch_no');
        $this->db->join('reviews r', 'r.batch_no = p.batch_no');
        $data = $this->db->get('product_table p')->result_array();

        print_r($data);