php - php mysql 每天找出三个最畅销的产品

标签 php mysql

我想找到每天销量最高的三种产品,并且 将它们与销售数量一起显示。

但是,如果有多个产品共享相同的 销售数量 我只想告诉有多少产品得到了这个 排名。

我有两张 table

Products:
+-----+---------+
| Pid | Product |
+-----+---------+
|  1  | Moon    |
|  2  | Sun     |
|  3  | Venus   |
|  4  | Mars    |
+-----+---------+

SalesRows:
+-----+---------+------------+
| Pid | No_sold | Sales_date |
+-----+---------+------------+
|  1  |    1    | 2013-01-01 |
|  2  |    5    | 2013-01-01 |
|  3  |    2    | 2013-01-01 |
|  2  |    2    | 2013-01-01 |
+-----+---------+------------+

应该给:

+------+--------------+-------+
| Rank | Product      | Sales |
+------+--------------+-------+
|  1   | Sun          |   7   |
|  2   | Venus        |   2   |
|  3   | Moon         |   1   |
+------+--------------+-------+

然而这个销售数据:

SalesRows:
+-----+---------+------------+
| Pid | No_sold | Sales_date |
+-----+---------+------------+
|  1  |    1    | 2013-01-01 |
|  2  |    5    | 2013-01-01 |
|  3  |    2    | 2013-01-01 |
|  2  |    2    | 2013-01-01 |
|  4  |    1    | 2013-01-01 |
+-----+---------+------------+

应该给:

+------+--------------+-------+
| Rank | Product      | Sales |
+------+--------------+-------+
|  1   | Sun          |   7   |
|  2   | Venus        |   2   |
|  3   | *2 products* |   1   |
+------+--------------+-------+

对如何解决最后一部分有什么建议吗?

最佳答案

此查询可能对您有所帮助。

SELECT @rownum := @rownum + 1 rownum, 
       t.* 
  FROM (SELECT @rownum:=0) r, 
       (select case when indicator = 1 then Product
else concat( indicator, ' Products') end as Product, sales from (Select *, count(sales) as indicator from (SELECT Product,SUM(No_sold) AS sales FROM SalesRows
JOIN Products ON Products.Pid = SalesRows.Pid
WHERE Sales_date = curdate()
GROUP BY SalesRows.Pid ) a group by sales Order by sales desc) a) t

关于php - php mysql 每天找出三个最畅销的产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15152587/

相关文章:

Python MySQLdb 不等待结果

mysql - Elasticsearch 全文与 mysql 全文?

php - CSS 与 PHP 合并

While 循环中的 PHP 更新

php - 级联坚持不工作(Doctrine ORM + Symfony 2)

php - Paypal 自适应支付php

php - WooCommerce Blocks - 向产品网格添加简短的产品描述

Mysql从两个表中选择,获取所有数据,如果不存在则num 0

mysql - 使用 LIMIT 函数显示第 1、2、3 行,其中使用 MySQL 的 MAX 客户评分

mysql - 在 MySql 触发器中保存查询