首页 新闻 会员 周边

商品销售情况统计,Mysql数据库,涉及多张表 怎么查询,跪求效率比较高效的做法?

0
悬赏园豆:50 [已解决问题] 解决于 2014-07-25 14:52

涉及的表是这样一个情况

商品表(商品ID xxx....商品信息的一些字段),订单表(订单ID,创建订单日期,订单总价 .....)  ,订单详单表(订单ID,商品ID,价格,数量),然后现在的需求是 查询某一个时间段的 比如这个月的 商品销售情况 

商品名称  订单总量  总的销售额  

xxx          10          100

 

类似这种列表怎么查询,这边使用的是PHP+mysql数据库,希望能得到高手指点 讲讲思路就行,因为数据量比较大 查询效率也是个问题

懒虫的枕头的主页 懒虫的枕头 | 初学一级 | 园豆:157
提问于:2014-07-25 11:35
< >
分享
最佳答案
0

这个应该直接查就是了吧~

订单 join 详单 join 商品

where 订单日期 between startDate and endDate

收获园豆:25
幻天芒 | 高人七级 |园豆:37175 | 2014-07-25 14:28

非常感谢 确实有时候是自己想得太复杂了,另外数据库查询这块也比较菜,更没有大数据量的处理经验,这边的数据量增长还是挺快的,另外有个问题想咨询下你  比如某个查询需要 join 很多张表的情况 怎么处理性能会高些,比如  商品表{id,名称}   商品分类表{分类ID,分类名称}  订单详单表{id ,商品ID}  这种情况 如果我想查询 

商品ID,商品分类,商品名称  这样的一个表  就得 join 3张表 据说这样性能也比较低的 这种情况怎么处理惠比较好?

懒虫的枕头 | 园豆:157 (初学一级) | 2014-07-25 14:40

@懒虫的枕头: 遇到瓶颈再说了。索引,减少查询字段,拆分大表都是可行的。没有几百万的数据,不是那么容易慢的~

幻天芒 | 园豆:37175 (高人七级) | 2014-07-25 14:45
其他回答(1)
0

跪求就何必呢,男儿膝下有黄金。

不知道你数据量有多大,其实很难给意见的。

我了解需求,一定要问客户数量级的,比如,一天多少张单,一张单多少商品项,共有多少不同的商品。

你问的这种查询是很基本的一个查询需求,一般都会实现的,在这上面,我没有碰到啥性能上的问题。

基本都是秒出,数据库5G,年营业额1个亿左右。

收获园豆:25
爱编程的大叔 | 园豆:30839 (高人七级) | 2014-07-25 12:10

我不知道是不是自己没描述清楚,目前数据量不是很大,订单详单表就几万条数据 订单表少一些 商品表就更少了 几千条数据。我现在没有头绪的地方就是,尝试过连接查询几张表好像不能把某一时段的这些数据取出来,如果在循环里面取 又会出现PHP执行超时的情况 更别说秒出了,我贴上我的查询语句 你帮我看看吧

select i.sub_name 商品名称,SUM(i.total_price) 销售额,SUM(i.balance_total_price) 商家分成 ,count(o.id) 下单量 from fanwe_deal_order_item i LEFT JOIN fanwe_deal_order o on i.deal_id = o.id where  GROUP BY deal_id   这样能统计出全部结果,但是我关于时间的条件加在哪儿呢  where o.create_time >=1404144000 and o.create_time < 1406256328 加上之后结果是空 都不知道怎么弄了 你看看我的查询语句有没有什么问题

支持(0) 反对(0) 懒虫的枕头 | 园豆:157 (初学一级) | 2014-07-25 14:03

@懒虫的枕头: 

你这样有几个问题

1、订单表与订单子表应该是强制性级联删除的,不需要使用LEFT JOIN。

另外,查询中,LEFT JOIN的性能也比INNER JOIN的差。

2、 你确实对SQL了解太少,几万条数据就这样了... 我都以为你有几千万条了...

楼下的回答基本是对的,实际应用中,需要根据情况对日期条件进行一些小处理,但这不关性能的事。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2014-07-25 14:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册