问题背景
需要统计店铺的订单数,订单表t_order中有shop字段表明属于哪个店铺
--该语句可以统计,但没有订单的店铺并没有显示出来
select shop, count(*) from t_order group by shop;
解决方法
以MySQL为例
select t_shop.id, count(t_order.id) from t_shop left join t_order on t_order.shop = t_shop.id group by t_shop.id;
以店铺表t_shop为主表左连接订单表t_order,可以保证统计时肯定能显示所有店铺,由于左连接的特性,没有订单的店铺也会查询出一条信息,使用count(t_order.id)
可以把订单信息为null的条数排除在统计范围外。(此处如果用where来排除,也会使没有订单的店铺无法显示)
这样没有订单的店铺统计结果显示为0