我有两张table
products sale_items
-------- ----------
id id
code product_id
name quantity
price ...
...
计算每个产品的销售数量,所有这些都在一个查询中完成。我试过这样的方法,但它不起作用:
public function getProductsListing()
{
$this->db->select("products.id, products.code, products.name");
$this->db->from('products');
$this->db->join('sale_items','sum(COALESCE(quantity, 0)) as qte', false)
->where("registers_id = '{$this->session->register_id}' and sale_items.product_id = products.id", null, false);
$query = $this->db->get();
if ($query->num_rows() > 0) {
foreach (($query->result()) as $row) {
$data[] = $row;
var_dump($data);
}
return $data;
}
else
{
return false;
}
}
3条答案
按热度按时间arknldoa1#
我不使用CI,但我认为您需要将
false
作为第二个参数传递给select()
,以阻止CI尝试转义列名。请注意,我将
SUM(COALESCE(quantity, 0))
切换为IFNULL(SUM(s.quantity), 0)
,因此IFNULL()
在聚合上运行,而不是在每行上运行。k2fxgqgv2#
你可以简单地在codeigniter中像这样连接表
7fhtutme3#
您可以在产品ID上使用
group by
子句: