我的主页上显示了一系列商品,我想按受欢迎程度排序。我有一个名为 sales
的列,它是产品销售量的计数器。
如何使用此列和/或其他列来确定在主页上显示哪些项目?我显然不能只使用 sales
来搜索热门商品,因为销量最高的商品将主导主页 - 我想要一个平衡的查询。
如果可能的话,查询也应该只在特定的时间范围内发生,例如过去一周等。
这是我的查询:
$popular_items = DB::fetch("SELECT * FROM `products` ORDER BY `sales` DESC LIMIT 10");
最佳答案
您必须首先定义“受欢迎程度”:按观看次数、按销量还是按购物车中的计数?
假设您有 2 个因素:浏览量
和销售额
。您可以根据这些因素与特定“新鲜期”的比率进行排序:
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 *
)
关于php - 如何根据受欢迎程度在在线商店订购商品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29382435/