需要统计出用户购买某种商品总价以及个数

Order 表和OrderDetail 表 需要按照商品分类;商品类型在detail中,总价格在order中

order 表

id  userid  factPrice 
1     22          30
2     33          10
3     33          40

order_detail表

Id    orderid       skuPrice        skuid   count
10      1               10           88        1
11      1               20           89        1
12      2               10           88        1
13      3               20           89        2           

我用的左链接
select o.userid ,sum(factPrice),sum(count) from order o left join order_detail od on o.id=od.orderid
group by o.userid ,od.skuid

  • 需要得到 用户, 总实际价钱,商品,购买总数
  • 但是得到的总价钱会由于左链接而大于实际价格,但是如果使用max()函数只取第一条,则count数量就会小于实际值。。。。

你这里的总价钱值得是什么???是单个id所用的总价格还是所有用户总价格的和???
按照你的sql语句:
select o.userid ,sum(factPrice),sum(count) from order o left join order_detail od on o.id=od.orderid group by o.userid ,od.skuid
应该是总和,但是如果是总和的话,应该就这样写了

select o.userid ,factPrice,sum(count) from `order` o right join order_detail od on o.id=od.orderid
group by o.userid

你直接查factPrice就行了啊,没必要用sum,另外只需要根据userid分组就行,加上skuid后22用户会多一条数据