如何按受欢迎程度在网上商店订购商品

时间:2015-04-01 03:36:43

标签: php mysql pdo

我的主页上显示了一系列项目,我想按人气排序。我有一个名为sales的列,它是该产品销售量的计数器。

如何使用此列和/或其他列来确定主页上显示的项目?我显然不能只使用sales来搜索热门项目,因为销售额最多的项目将占据主页 - 我想要一个平衡的查询。

如果可能,查询也应仅在特定时间范围内发生,例如过去一周等。

这是我的疑问:

$popular_items = DB::fetch("SELECT * FROM `products` ORDER BY `sales` DESC LIMIT 10");

2 个答案:

答案 0 :(得分:0)

你必须定义"受欢迎程度"第一:按购物车的观看次数,按销售量或按次数计算?

假设您有两个因素:pageviewsales。您可以按照这些因素对某些"新鲜期"

的比例进行排序
SELECT * FROM `products` 
WHERE DATEDIFF(last_update_date, CURDATE()) < 30
ORDER BY (pageview * 0.7 + sales * 0.3) DESC

类似的东西(因为我不知道你的表中的列名)


如果您想获得均衡的结果,可以使用:

SELECT * FROM `products` ORDER BY RAND() DESC

将返回随机结果。您可能也需要LIMIT(无意义地列出所有产品)。

旁注:

  • 建议仅选择有用的列(避免使用SELECT *

答案 1 :(得分:0)

如果您的销售在某些情况下具有相同的价值,那么您可以使用

SELECT * FROM `products` ORDER BY  sales DESC,rand() LIMIT 3 

将以销售降序返回随机结果。我不确定你的数据是什么,我刚刚测试了它的结果。