Php 如何按流行程度在网上商店订购商品
我有一系列的项目显示在我的主页上,我想按人气排序。我有一个名为sales的专栏,它是一个计数器,用于计算产品的销售量 如何使用此列和/或其他列来确定要在主页上显示的项目?很明显,我不能仅仅用销售来搜索热门商品,因为销售最多的商品将占据主页的主导地位——我想要一个平衡的查询 如果可能的话,查询也应该只在一定的时间范围内发生,例如过去的一周等 我的问题是:Php 如何按流行程度在网上商店订购商品,php,mysql,pdo,Php,Mysql,Pdo,我有一系列的项目显示在我的主页上,我想按人气排序。我有一个名为sales的专栏,它是一个计数器,用于计算产品的销售量 如何使用此列和/或其他列来确定要在主页上显示的项目?很明显,我不能仅仅用销售来搜索热门商品,因为销售最多的商品将占据主页的主导地位——我想要一个平衡的查询 如果可能的话,查询也应该只在一定的时间范围内发生,例如过去的一周等 我的问题是: $popular_items = DB::fetch("SELECT * FROM `products` ORDER BY `sales` DE
$popular_items = DB::fetch("SELECT * FROM `products` ORDER BY `sales` DESC LIMIT 10");
你必须首先定义受欢迎程度:根据浏览量、销售额或购物车的数量 假设你有两个因素:页面浏览量和销售额。您可以根据以下因素按一定比例订购特定的新鲜期:
SELECT * FROM `products`
WHERE DATEDIFF(last_update_date, CURDATE()) < 30
ORDER BY (pageview * 0.7 + sales * 0.3) DESC
它将返回随机结果。您可能需要的限制太无意义,无法列出所有产品
旁注:
建议只选择有用的列,避免使用select*
如果你的销售额在某些情况下具有相同的价值,那么你可以使用
SELECT * FROM `products` ORDER BY sales DESC,rand() LIMIT 3
它将以销售降序返回随机结果。我不确定您的数据是什么,我只是在最后测试了它。我们不知道您还有哪些其他列,或者您试图通过平衡查询实现什么。我唯一能想到的帮助是限制当前查询的顶部项目数,然后为主页的其余部分创建另一个。我只选择了有用的列,我只是使用SELECT*进行演示。如果我使用RAND,那不就是选择不一定流行的随机结果吗?另外,我如何在特定的时间段内实现这一点?这就是为什么我问你流行是什么意思。你能在你的例子中定义流行度吗?我写过我是按“销售”来订购的,所以我用它作为流行度的定义。你提到了页面浏览量,这是一个好主意,所以我将实现这一点。如果你想要平衡,你可能希望随着时间的推移而流行。这会使您的销售领域不适合查询我如何随着时间的推移建立人气?
SELECT * FROM `products` ORDER BY sales DESC,rand() LIMIT 3