2017-04-19 63 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(日期)