我的主页上显示了一系列项目,我想按人气排序。我有一个名为sales
的列,它是该产品销售量的计数器。
如何使用此列和/或其他列来确定主页上显示的项目?我显然不能只使用sales
来搜索热门项目,因为销售额最多的项目将占据主页 - 我想要一个平衡的查询。
如果可能,查询也应仅在特定时间范围内发生,例如过去一周等。
这是我的疑问:
$popular_items = DB::fetch("SELECT * FROM `products` ORDER BY `sales` DESC LIMIT 10");
答案 0 :(得分:0)
你必须定义"受欢迎程度"第一:按购物车的观看次数,按销售量或按次数计算?
假设您有两个因素:pageview
和sales
。您可以按照这些因素对某些"新鲜期"
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
将以销售降序返回随机结果。我不确定你的数据是什么,我刚刚测试了它的结果。