1

毎日最も売れている3つの商品を見つけて、売上数と一緒に表示したいと思います。

ただし、同じ販売数を共有する製品が複数ある場合は、このランキングを獲得した製品の数を知りたいだけです。

私は2つのテーブルを持っています

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   |
+------+--------------+-------+

この最後の部分を解決する方法について何か提案はありますか?

4

2 に答える 2

2

このクエリはあなたを助けるかもしれません。

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
于 2013-03-01T08:43:30.123 に答える
0

これを試して :

SELECT Product,SUM(No_sold) AS sales FROM SalesRows 
LEFT JOIN Products ON Products.Pid = SalesRows.Pid
WHERE Sales_date = '".$today."'
GROUP BY Pid
于 2013-03-01T07:26:16.850 に答える