【发布时间】:2013-01-01 11:34:01
【问题描述】:
任何人都可以将此查询转换为活动记录代码点火器???
SELECT b.name,
SUM(CASE WHEN c.size = 'S' THEN 1 ELSE 0 END) S,
SUM(CASE WHEN c.size = 'M' THEN 1 ELSE 0 END) M,
SUM(CASE WHEN c.size = 'L' THEN 1 ELSE 0 END) L,
SUM(CASE WHEN c.size = 'XL' THEN 1 ELSE 0 END) XL
FROM orderTB a
INNER JOIN productTB b
ON a.id_product = b.id_shirt
INNER JOIN sizeTB c
ON a.id_size = c.id_size
GROUP BY b.name
我试过这样
function get()
{
$this->db->select("b.name,SUM(CASE WHEN c.size ='S' THEN 1 ELSE 0 END) as S,SUM(CASE WHEN c.size = 'M' THEN 1 ELSE 0 END) as M,SUM(CASE WHEN c.size = 'L' THEN 1 ELSE 0 END) as L,SUM(CASE WHEN c.size = 'XL' THEN 1 ELSE 0 END) as XL");
$this->db->from('order');
$this->db->join('ukuran','order.id_size=ukuran.id_size');
$this->db->where('date',$date);
return $this->db->get();
}
但是错了
【问题讨论】:
-
你不应该有
SELECT b.name, c.size, COUNT(*) FROM ... GROUP BY b.name, c.size,然后再重新组织数据吗? -
将 FALSE 作为第二个参数添加到您的选择中
标签: mysql codeigniter activerecord php