2017-04-19 62 views
0

如何創建一個結果,無論PHPMySQL這將顯示2005年,作爲例子,總結所有結果對於從日期straing PHP MySQL的每個新的一年

例輸入

------------------------- 
Date  \ Quantiti 
------------------------- 
12-05-2005 \  5 
------------------------- 
23-08-2005 \  8 
------------------------- 
11-02-2006 \  4 
------------------------- 
26-09-2006 \  2 
------------------------- 

實施例輸出中

--------------------------- 
year \ Total 
--------------------------- 
2005 \  13 
--------------------------- 
2006 \  6 
--------------------------- 

<?php 
$sql = "SELECT * FROM mytable ORDER BY date DESC"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 

    while($row = $result->fetch_assoc()) { 
     $date = $row["date"]; 
     $quantiti = $row["quantiti"]; 

     // here i need code for each new year 
    } 
    } else { 


    } 
?> 
+0

大字母的頭。你能否編輯你的問題並使其可讀? – cpap

+0

你應該看看'YEAR()'和'SUM()':https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html – jeroen

回答

0

您可以使用SUM來彙總數量和GROUP BY按年份對結果進行分組。

爲您的需要的SQL查詢應該是:

SELECT YEAR(Date), SUM(Quantiti) 
FROM mytaple 
GROUP BY YEAR(Date) 

所以,你的代碼是:

<?php 
$sql = "SELECT YEAR(Date) as y, SUM(Quantiti) as q FROM mytaple GROUP BY YEAR(Date)"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 

    while($row = $result->fetch_assoc()) { 
     $date[] = $row["y"]; 
     $quantiti[] = $row["q"]; 
    } 
for($i<0; $i<count($date);$i++) { 
     echo $date[$i]."/".$quantiti[$i]; 
    } 
    } else { 


    } 

    ?> 
+0

謝謝你的想法是'通過...分組'。但問題是我不知道如何適應它在我的代碼在PHP :( – user2767046

+0

謝謝你現在的工作,感謝它 – user2767046

1

可以SUM()所有通過分組年已同年quantyties,使用GROUP BY YEAR(date)。這樣一個簡單的查詢應該做的工作

SELECT SUM(Quantiti) as `total`, 
     YEAR(date) as `year` 
FROM mytable 
GROUP BY YEAR(date) 

注意,返回結果被命名爲totalyear,按您的示例輸出。

-1

集團通過與年份和月份會達到這個

GROUP BY YEAR(日期),MONTH(日期)