2016-08-15 18 views
1

ユーザーは1日、1週間、1ヶ月あたりの売上を見ることができる販売レポートを作成しようとしています。1日、1週間、1か月あたりのMySQL売上

これは私のテーブルです:

CREATE TABLE IF NOT EXISTS `sales_act` (
    `id` int(11) NOT NULL auto_increment, 
    `sale` decimal(10,2) NOT NULL default '0.00', 
    `paymethod` smallint(2) NOT NULL default '0', 
    `saledate` datetime NOT NULL default '0000-00-00 00:00:00', 
    `status` smallint(2) NOT NULL default '0', 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ; 

INSERT INTO `sales_act` (`id`, `sale`, `paymethod`, `saledate`, `status`) VALUES 
(1, '150.00', 3, '2016-07-30 14:37:25', 2), 
(2, '50.00', 1, '2016-08-14 21:38:34', 1), 
(3, '150.00', 3, '2016-08-15 14:23:21', 2), 
(4, '100.00', 1, '2016-08-15 14:25:12', 1), 
(5, '50.00', 2, '2016-08-15 14:27:31', 3); 

私はこれのstackoverflowのいくつかの例では、ここで読んでいたが、私はそれを動作させるように見えるカント、これは私がこれまで持っているものですが、doesntの仕事:(

$result = $mysqli->query('SELECT DATE_FORMAT(saledate, "%m-%Y") AS Month, SUM(sale) AS `salessum` WHERE `status` < 3 GROUP BY DATE_FORMAT(saledate, "%m-%Y")'); 
while ($row = $result->fetch_assoc()) { 

    echo '<pre>'; 
print_r($row); 
    echo '</pre>'; 

} 

誰かImが間違っているのを教え事前に 感謝!!できますか?A:あなたはFROM句逃しD

答えて

2

は(すでにdatetime型としてsaledateいる)MONTHを使用する必要があります

'SELECT MONTH(saledate) AS Month, SUM(sale) AS `salessum` 
FROM sales_act 
WHERE `status` < 3 GROUP BY MONTH(saledate)' 
+0

がうまくいきました!ありがとう!!! :D – EnterateNorte

+0

@EnterateNorte ..もし私の答えが正しいのならば、 – scaisEdge

0

あなたはこのラインでデータベースを指定することを忘れている:

$result = $mysqli->query('SELECT DATE_FORMAT(saledate, "%m-%Y") AS Month, SUM(sale) AS `salessum` WHERE `status` < 3 GROUP BY DATE_FORMAT(saledate, "%m-%Y")'); 

ベター:

$result = $mysqli->query('SELECT DATE_FORMAT(saledate, "%m-%Y") AS Month, SUM(sale) AS `salessum` FROM sales_act WHERE `status` < 3 GROUP BY DATE_FORMAT(saledate, "%m-%Y")'); 

SELECT DATE_FORMAT(saledate, "%m-%Y") AS Month, 
SUM(sale) AS `salessum` 
FROM sales_act 
WHERE status < 3 
GROUP BY DATE_FORMAT(saledate, "%m-%Y") 
関連する問題