2017-08-26 17 views
0

請閱讀之前打標爲重複顯示總費用在每個類別中的最後六個月MYSQL

這是產品表的結構: Table products

有記錄的600個多行在這張桌子裏。

我要的是,它顯示了這樣的事情

| Category | Price | Month | Year | 
| Bills | 12389 | 08 | 2017 | 
| Food | 10589 | 08 | 2017 | 
| ...  | ..... | .. | .... | 
| Bills | 18989 | 07 | 2017 | 
| Food | 20589 | 07 | 2017 | 
| ...  | ..... | .. | .... | 
| Bills | 12784 | 06 | 2017 | 
| Food | 23589 | 06 | 2017 | 
| ...  | ..... | .. | .... | 

我幹了什麼?對於當月

SELECT category AS 'Category', SUM(total_PRICE) AS 'Total Amount' 
FROM `products` 
WHERE month(DATE)=(SELECT MONTH(CURDATE())) AND year(DATE)=(SELECT YEAR(CURDATE())) GROUP BY category ORDER BY `Total Amount` DESC 

這一個返回記錄 「分類視圖

我也試過這個

SELECT * 
FROM products 
WHERE date_format(date,'%Y-%m') < date_format(now(),'%Y-%m') and 
     date_format(date,'%Y-%m') >= date_format(now() - interval 6 month,'%Y-%m') 

這將返回從最近六個月的所有記錄

如果不可能寫這種類型的查詢,那麼請幫我寫一個程序在PHP中,將打印此類型的數據篩選

回答

1

你似乎想:​​

SELECT category, date_format(date,'%Y-%m') as yyyymm, SUM(total_PRICE) 
FROM products 
WHERE date_format(date,'%Y-%m') < date_format(now(),'%Y-%m') and 
     date_format(date,'%Y-%m') >= date_format(now() - interval 6 month,'%Y-%m') 
GROUP BY category, date_format(date,'%Y-%m') 
ORDER BY category, yyyymm DESC; 
+0

它真的幫助爵士。 謝謝 – Zakawat