php - mysql关联查询并得到某条数据的排名。
伊谢尔伦
伊谢尔伦 2017-04-10 17:52:29
[PHP讨论组]

现在有一个订单表,表中有一字段shop_id(店铺id),还有一个shop表(店铺表),现在我想得到某个店铺所有订单总额在所有店铺里面的排名,这个sql语句该怎么写呢?或者说有什么简单的办法去实现呢?

ps:店铺表中没有销售总额字段,我现在是先将所有店铺的销售额进行排序,但是如果去遍历数组比较某个店铺的销售额的排名实在是太麻烦了

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(4)
PHP中文网
SELECT a.id,a.shopname,sum(b.order_price) FROM tb_shop a LEFT JOIN tb_item_order b on a.id=b.shop_id GROUP BY a.id ORDER BY sum(b.order_price) desc

亲测,可以实现题主的需求

天蓬老师

麻烦的很,最佳办法就是表里增加销售总额字段,不然的话每次要排名就要统计一次,数据库肯定挂。这种应用肯定是你进店铺的时候显示一个排名信息,N个人进不同的店铺,你要统计N次每个店铺的销售总额吗?

正解是增加销售总额和排名字段,使用定时任务每天更新一次。

ringa_lee
SELECT a.id, sum(b.price) as total_price FROM shop a, order b 
WHERE a.id = b.shop_id 
GROUP BY a.id 
ORDER BY total_price desc
巴扎黑

简单想了下,两个思路
一是先算出这个店铺的销售额是多少,然后去所有店铺销售额的结果集中找大于这个值的count数
二是引入预定义用户变量来实现,set @mycnt = 0; select (@mycnt := @mycnt + 1) as ROWNUM
另外如果这个总排名很常用的话,还是建议建立一个总额的字段

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号