新手请教一个关于 MySQL 和 PHP 取值排序的问题

2018-02-01 13:27:43 +08:00
 swuhvxee

现在通过 sql 按照时间排序取出最新的 50 条商品数据, 然后 while 输出这 50 条商品信息。

同时,需要取出这 50 条中点击量最高的 1 条或者多条信息,怎么做?

1642 次点击
所在节点    问与答
13 条回复
wayne712
2018-02-01 13:49:34 +08:00
遍历 50 条商品信息, 将所有点击量数据存到另外一个数组, 然后对这个点击量数组进行排序, 最后根据已排序的点击量数组下标值反查商品信息数组即可
swuhvxee
2018-02-01 13:55:09 +08:00
@wayne712 是在 while 中把点击量存入数组进行比较,然后取出最大的吧。我也这么想过,有没有更简单的方法呢
swuhvxee
2018-02-01 13:55:53 +08:00
@wayne712 因为新手,我也想到了这个办法,总觉得是个笨办法,是我的幻觉还是只能这么解决
wellCh4n
2018-02-01 15:11:08 +08:00
写两条 sql,一条获取 50 条,一条获取 50 条里面点击量最高的那条
eslizn
2018-02-01 15:14:08 +08:00
点击量有在商品中存储么?有的话 usort 一下就可以了
zakokun
2018-02-01 15:14:46 +08:00
你要取最新的 50 条,然后这 50 条中拿最高的 N 条

那自然就是数据库 select 50 个呗,拿出来以后 foreach 排序。 这思路很自然 你还想怎么优化?
swuhvxee
2018-02-01 15:19:01 +08:00
@eslizn
@zakokun 这样 usort,foreach 排序会不会打乱原有的 50 条排序
swuhvxee
2018-02-01 15:21:13 +08:00
@eslizn
@zakokun
这个需求确实很蛋疼,又要按照时间排序输出商品列表。
又要输出其中这些商品的热门商品
swuhvxee
2018-02-01 15:46:07 +08:00
此问题已解决。感谢解惑
b821025551b
2018-02-01 15:47:05 +08:00
这个需求本身就很矛盾吧。。。。
swuhvxee
2018-02-01 15:52:50 +08:00
@b821025551b 不矛盾啊,时间排序和热门排序本身就不矛盾。。。关键是我在练习这个项目中,不想额外添加 sql,因为不知道是否可以在一个动作内解决
zakokun
2018-02-01 16:02:14 +08:00
@swuhvxee 你用个新的数组处理排序啊, 这种需求很正常吧,多做做就好 比如很多的最新 50 个的榜单,然后给这 50 个中最热门的标记一个『最热』之类的,正常
swuhvxee
2018-02-01 16:18:28 +08:00
@zakokun 我也是这么做的,把点击量放到一个数组里比较然后找出下标来判断了。感谢你的回答

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/427686

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX