SQL查询结果集排序问题

yuzhuping 2009-01-20 10:33:29
我想对一个查询的结果排序,可要排序的这个列并不是表中固有的字段,而是运算后得出的,请问除了把这个结果集放到表里,再来排序,还有什么别的办法嘛?要不然每次查询都放表里,太慢了。


具体问题如下:
查询一个产品被多少个客户购买过(这个数量并不是存在产品表里,而是通过订单产品统计出来的)。我已统计出每个产品的客户数,可是没法排序。
请哪位大侠支个招吧!!!!

之所以没有把购买客户数量存在产品的固定字段内,是因为以前没做,而现在要改的话,牵涉改动的页面很多,因时间问题,暂时无法改动。
...全文
572 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
如果没有关系,你就只改这个,根本花不了多长时间
就算有关系,你改这些排序最多也就2个小时
  • 打赏
  • 举报
回复
哎,现在知道数据库设计的重要性了吧,没有给自己留后路

你别的字段排序与统计客户数排序有关系????
yuzhuping 2009-01-20
  • 打赏
  • 举报
回复
明天结贴吧。不管有没有我要的答案,都有分
yuzhuping 2009-01-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chinmo 的回复:]
通过订单的客户数不是很准确,因为会有重复的客户


所以你要想准确得知道,得有一个明确的字段来控制,不管是在订单表里还是在什么表里,都请记录一下比较好,其实你加一个字段也改不了多少页面,只是你加一个表最好了,这个表就存储客户ID和产品ID即可,这样你改的东西也不是太多

不外乎就是在下订单一页加一个这个记录的,还有就是在你要显示的地方加这么一个查询即可
[/Quote]

是的,你已经说了,可是我不认为我要改的地方只有这么一点点。
且不说我每次下单就要找找订这个产品的客户以前是否已经订过这个产品等,也就是还要有个记录订这个产品的客户的地方,还有冲单,退单等一系列的,时间上来不及了。
就算这些也不多,关键我并不只是这一个地方要排,我只是举了一个例。还有好多别的字段要这样排啊。
  • 打赏
  • 举报
回复
哎!!我不是说了吗
yuzhuping 2009-01-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 layers2323 的回复:]
如果你想用order by 排序,那么这个列必须在sql语句中计算出来。
如果你不是在sql语句中算出来的,那么你就自己写代码排序了。
[/Quote]

我知道啊,所以我就是来问怎么写代码排序嘛。
yuzhuping 2009-01-20
  • 打赏
  • 举报
回复
其实我不直没明白
select count(id) as cumentCount from ta order by cumentCount asc
统计出一个数字,再把这个数字排序有什么意义,一共就一条记录啊,还排?

ChinaXtHuLang 2009-01-20
  • 打赏
  • 举报
回复
好象也只是改变了排序的方式哦。。
ChinaXtHuLang 2009-01-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 happy002 的回复:]
desc 是倒序排列吧
[/Quote]
既然楼上的这么说。那LZ你这样:
select count(id) as cumentCount from ta order by cumentCount asc 
yuzhuping 2009-01-20
  • 打赏
  • 举报
回复
不好意思,上面打错了个:
order2表就是order_product表
就是订单产品表
yuzhuping 2009-01-20
  • 打赏
  • 举报
回复
先谢谢楼上各位关注。
再帮我想想吧...
select count(id) as cumentCount from ta order by cumentCount desc
这个虽然有那些意思,可是好像用不到我这里
happy002 2009-01-20
  • 打赏
  • 举报
回复
desc 是倒序排列吧
yuzhuping 2009-01-20
  • 打赏
  • 举报
回复
是我说的不够明白。我再补充一下,我是通过产品来显示的。
就像这样:
产品编号 产品名称 已被订走 库存 购买客户数
M00040110 惠氏金盒装幼儿乐三段 189 123 18
0028 安可婴儿奶伴侣1段 85 0 18
M00140102 美素金装美素高三段 74 21 23
0023 婴儿毛巾 70 0 32
M00090103 雅培金幼儿喜康力900克三段 57 9 19

我用
select product_id from product 得到产品ID(product_id)

再select count(*) as cusnum from (select customer_id from order2 where product_id='"&Product_ID&"' and baofei=0 group by customer_id) as dd
就是用产品ID去订单产品表(order_product)里统计了客户数:customer_num

现在我想把上面显示的结果按客户数排序
layers2323 2009-01-20
  • 打赏
  • 举报
回复
如果你想用order by 排序,那么这个列必须在sql语句中计算出来。
如果你不是在sql语句中算出来的,那么你就自己写代码排序了。
ChinaXtHuLang 2009-01-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xia_zhigang 的回复:]
引用 5 楼 chinmo 的回复:
首先我想问你,你用什么东西记录了购买的客户?

如果你都没有记录购买的客户,不管你怎么写,你都无法知道客户数

lz的问题是: 。我已统计出每个产品的客户数,可是没法排序。
[/Quote]
UP
  • 打赏
  • 举报
回复
通过订单的客户数不是很准确,因为会有重复的客户


所以你要想准确得知道,得有一个明确的字段来控制,不管是在订单表里还是在什么表里,都请记录一下比较好,其实你加一个字段也改不了多少页面,只是你加一个表最好了,这个表就存储客户ID和产品ID即可,这样你改的东西也不是太多

不外乎就是在下订单一页加一个这个记录的,还有就是在你要显示的地方加这么一个查询即可
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chinmo 的回复:]
首先我想问你,你用什么东西记录了购买的客户?

如果你都没有记录购买的客户,不管你怎么写,你都无法知道客户数
[/Quote]
lz的问题是: 。我已统计出每个产品的客户数,可是没法排序。
  • 打赏
  • 举报
回复
首先我想问你,你用什么东西记录了购买的客户?

如果你都没有记录购买的客户,不管你怎么写,你都无法知道客户数
  • 打赏
  • 举报
回复
select count(id) as cumentCount from ta order by cumentCount desc 引用一楼的
取别名 cumentCount
也就相当于lz说的固定的字段啦
desc 按改字段排序
  • 打赏
  • 举报
回复
[Quote=引用楼主 yuzhuping 的帖子:]
我想对一个查询的结果排序,可要排序的这个列并不是表中固有的字段,而是运算后得出的,请问除了把这个结果集放到表里,再来排序,还有什么别的办法嘛?要不然每次查询都放表里,太慢了。


具体问题如下:
查询一个产品被多少个客户购买过(这个数量并不是存在产品表里,而是通过订单产品统计出来的)。我已统计出每个产品的客户数,可是没法排序。
请哪位大侠支个招吧!!!!

之所以没有把购买客户数量存…
[/Quote] 顶
加载更多回复(5)

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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