使用加入 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);
我有两个 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);