Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何按流行程度在网上商店订购商品_Php_Mysql_Pdo - Fatal编程技术网

Php 如何按流行程度在网上商店订购商品

Php 如何按流行程度在网上商店订购商品,php,mysql,pdo,Php,Mysql,Pdo,我有一系列的项目显示在我的主页上,我想按人气排序。我有一个名为sales的专栏,它是一个计数器,用于计算产品的销售量 如何使用此列和/或其他列来确定要在主页上显示的项目?很明显,我不能仅仅用销售来搜索热门商品,因为销售最多的商品将占据主页的主导地位——我想要一个平衡的查询 如果可能的话,查询也应该只在一定的时间范围内发生,例如过去的一周等 我的问题是: $popular_items = DB::fetch("SELECT * FROM `products` ORDER BY `sales` DE

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

如何使用此列和/或其他列来确定要在主页上显示的项目?很明显,我不能仅仅用销售来搜索热门商品,因为销售最多的商品将占据主页的主导地位——我想要一个平衡的查询

如果可能的话,查询也应该只在一定的时间范围内发生,例如过去的一周等

我的问题是:

$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