2016-12-02 68 views
-1

好吧,我有一個表3表(訂單,ORDER_DETAILS,產品)MySQL查詢的所有月份,以獲得特定項目的數據

訂單

id | order_date 
1 | March-01-13 
2 | March-02-13 
3 | April-01-13 
4 | May-01-13 
5 | June-01-13 
and so on..... 

ORDER_DETAILS

id | order_id | product_id | total_price 
1   1   1   100  /*mouse*/ 
2   1   3   200 /*monitor*/ 
3   2   2   50  /*keyboar*/ 
4   2   3   200 /*monitor*/ 
and so on.... 

產品

id | title 
1  mouse 
2  keyboard 
3  monitor 
and so on... 

這裏是我的SQL查詢,給予意想不到的輸出

SELECT title, SUM(total_price) as total_price, orders.order_date as date 
FROM products 
LEFT JOIN order_details 
ON order_details.product_id=products.id 
LEFT JOIN orders 
ON orders.id=order_details.order_id 
WHERE title='monitor'     /*this is just a try, prod_id should be the one*/ 
GROUP BY MONTH(date) 
ORDER BY total_price DESC LIMIT 10 

我想是的product_id的所有月份的TOTAL_PRICE

期望輸出

title | total_price | date 
monitor  400   March 

回答

1

使用GROUP BY時,SELECT列表中的所有字段都需要進行聚合或成爲GROUP BY的一部分。因此,試圖通過添加「稱號」到組,並添加MONTH函數來order_date的SELECT列表如下:

SELECT title, SUM(total_price) as total_price, MONTH(orders.order_date) as date 
FROM products 
LEFT JOIN order_details ON order_details.product_id=products.id 
LEFT JOIN orders ON orders.id=order_details.order_id 
WHERE title='monitor'     
GROUP BY title, date 
ORDER BY total_price DESC LIMIT 10 

這將得到TOTAL_PRICE每個產品每個月份。

+0

謝謝。有用。那個月的每一天的「total_price」如何? – Emjey23

0

你想要一些像這樣的事情?

SELECT p.title, SUM(total_price) as total_price 
FROM products p LEFT JOIN 
    order_details od 
    ON od.product_id = p.id LEFT JOIN 
    orders o 
    ON o.id = od.order_id 
GROUP BY p.title 
ORDER BY total_price DESC 
LIMIT 10; 

我不明白爲什麼您的示例輸出將有一個月在它。

+0

我的圖表數據將需要月份。所以它必須有一個月,我想。 – Emjey23

相關問題