数据查询出来大概是这个样子(实际应用中会很复杂,这里造一些类似的数据,用来举例说明)
简单的查询
- $data = Db::name('order')
- ->field('sum(money) as moneys')
- ->where($where)
- ->select();
这个只能是简单的将所有的money字段的值加在一起
如果我的from_type是三个不通的来源,我想统计每个来源下的和,同时按照商品名字分组
- $data = Db::name('order')
- ->field('id,name,sum(if(from_type = 1,money,0)) as one,sum(if(from_type = 1,money,0)) as two,sum(if(from_type = 1,money,0)) as three')
- ->where($where)
- ->group('name')
- ->select();
if(from_type = 1,money,0)
可以理解为,判断from_type子弹是否等于1,如果是吧money的值加上,如果不是,就加上0,类似于三元运算符的感觉
同样,也适用于,count(),avg()这些聚合函数.
同样解决这些问题,也可以直接查询出所有的订单数据,然后foreach遍历,加上if判断,一个一个加上,也能处理.