商城产品销售量排序SQL语句如何写?

zcxverygood123456 2016-08-12 09:25:24
商城产品数据结构:
表一:chanpin ----产品表
x_id ----产品ID
shu -----这个是产品销售量的基数,产品的销售量=这个基数+实际销售量

表二:dingdan ----订单表
d_id -----订单ID
x_id -----产品ID,跟产品表的产品ID关联
===========================================
在前台的产品展示列表,现在要实现按销售量排序?如何写SQL语句?

即:select * from chanpin ORDER BY (产品基数+实际销售量) DESC
...全文
1031 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
超级路灯 2016-08-15
  • 打赏
  • 举报
回复
用一个列来表示订单总数,按总数排序就行了 啊 select x_id,shu ,countshu=(shu+(select count(*) from dingdan as b where b.x_id=a.x_id)) from chanpin as a order by countshu desc 虽然解决了楼主的问题,但楼主的数据设计有问题。你这样系统性能不好,最好是有个销售统计表,记录销售总数,每销售一个+1
秋的红果实 2016-08-13
  • 打赏
  • 举报
回复
引用 13 楼 zcxverygood123456 的回复:
上面我说的是实际销售量的算法, 但最终效果,我要得出 “”产品基数+实际销售量“”,排序要按这个来排序 4#的语句只是实现按实际销售量来排序,这只是局部排序 9#和10#,我只是解释实际销售量的算法而已,但最终不是按实际销售量来排序。 比如,一个产品的ID是100,在“”chanpin ----产品表“”里的产品基数是10,在“”dingdan ----订单表“”里统计出来实际销售量总共是99, 那么这个产品的总销售量就是109, 要列出所有的产品,并按这个总销售量来排序,就这个意思
原来这个shu,一种产品只加一次。稍微改动下1#就是了

 select a.x_id,a.shu+sum(b.实际销售量) as 产品的销售量 from dingdan b left join chanpin  a on a.x_id=b.x_id group by a.x_id order by 产品的销售量 desc

其中“实际销售量”是一次购货数量,例如 dingdan ----订单表 d_id x_id 实际销售量 1 100 20 2 100 30 3 101 50 4 100 10 ---------------------------------
zcxverygood123456 2016-08-13
  • 打赏
  • 举报
回复
上面我说的是实际销售量的算法, 但最终效果,我要得出 “”产品基数+实际销售量“”,排序要按这个来排序 4#的语句只是实现按实际销售量来排序,这只是局部排序 9#和10#,我只是解释实际销售量的算法而已,但最终不是按实际销售量来排序。 比如,一个产品的ID是100,在“”chanpin ----产品表“”里的产品基数是10,在“”dingdan ----订单表“”里统计出来实际销售量总共是99, 那么这个产品的总销售量就是109, 要列出所有的产品,并按这个总销售量来排序,就这个意思
秋的红果实 2016-08-12
  • 打赏
  • 举报
回复


 select a.x_id,sum(a.shu+b.实际销售量) as 产品的销售量,count(*) as 销售数量 from dingdan b left join chanpin  a on a.x_id=b.x_id group by a.x_id order by 销售数量 desc,产品的销售量 desc

排序首先按照“销售数量”倒序排,里面要是有“销售数量”一样的数据,在按照“产品的销售量”倒序排列 当然,将desc改成asc就是升序,可以指定一个是升序,一个是降序 看你的需要了,order by可以跟一个排序字段,销售数量 desc一个,或产品的销售量 desc一个
zcxverygood123456 2016-08-12
  • 打赏
  • 举报
回复
请问: select a.x_id,sum(a.shu+b.实际销售量) as 产品的销售量 from dingdan b left join chanpin a on a.x_id=b.x_id group by a.x_id order by 产品的销售量 desc 这个是计算产品实际销量:SELECT x_id,count(*) as iCount from dingdan group by x_id order by iCount desc ============================================ 这两个语句怎么合成一个呢? 能达到这一的效果,select * from chanpin ORDER BY (产品基数+实际销售量) DESC
秋的红果实 2016-08-12
  • 打赏
  • 举报
回复
SELECT x_id,count(*) as iCount from dingdan group by x_id order by iCount desc
zcxverygood123456 2016-08-12
  • 打赏
  • 举报
回复
实际销售量:我想统计的是订单里面有多少个“”产品ID“”,每个产品ID算一个 SELECT count(*) as iCount from dingdan where x_id='对应的产品ID'
秋的红果实 2016-08-12
  • 打赏
  • 举报
回复
实际销售量,就是你dingdan表里的字段,顾客每次订货的数量
秋的红果实 2016-08-12
  • 打赏
  • 举报
回复

 select a.x_id,sum(a.shu+b.实际销售量) as 产品的销售量 from dingdan b left join chanpin  a on a.x_id=b.x_id group by a.x_id order by 产品的销售量 desc
秋的红果实 2016-08-12
  • 打赏
  • 举报
回复
x_id iCount 100 3 101 1 ----------------------
秋的红果实 2016-08-12
  • 打赏
  • 举报
回复
引用 10 楼 zcxverygood123456 的回复:
dingdan ----订单表 d_id x_id 1 100 2 100 3 101 4 100 --------------------------------- 上面这个x_id=100的有3个,即产品ID的实际销售量是3 产品ID为101的,实际销售量是1
这不就是按照销售个数排序么?就是我4#写的,执行那条sql,结果如下: x_id iCount 100 3 101 1 ---------------------- 这就是你要的效果啊 你可以在管理器执行我4#的语句,验证下就知道了
zcxverygood123456 2016-08-12
  • 打赏
  • 举报
回复
dingdan ----订单表 d_id x_id 1 100 2 100 3 101 4 100 --------------------------------- 上面这个x_id=100的有3个,即产品ID的实际销售量是3 产品ID为101的,实际销售量是1
zcxverygood123456 2016-08-12
  • 打赏
  • 举报
回复
实际销售量,是这样统计的,比如我统计一个产品ID等于100的, SELECT count(*) as iCount from dingdan where x_id='100' 这个产品ID为100的实际销售量= iCount;
秋的红果实 2016-08-12
  • 打赏
  • 举报
回复
实际销售量,是不是在dingdan表里? select * ,*具体包括哪些项目?
zcxverygood123456 2016-08-12
  • 打赏
  • 举报
回复
没达到我想要的效果。 我想要的效果是: select * from chanpin ORDER BY (产品基数+实际销售量) DESC 不知有什么办法可以实现?

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧