2012-04-16 82 views
1

我有一个MySQL数据库,看起来像这样:组值加在一起在PHP/MySQL和添加一列的值成组

Name: Joe 
Items: 25 
CreationDate: 2012-04-14 18:49:50 

Name: John 
Items: 89 
CreationDate: 2012-04-14 18:47:17 

Name: Bill 
Items: 95 
CreationDate: 2012-04-09 12:34:08 

Name: Bob 
Items: 35 
CreationDate: 2012-04-09 12:18:23 

我想要做的是组行通过CreationDate(根据只有一天,最后的时间不应该是一个因素)。然后将这些项目一起添加到一个项目/日。

所以,我所要的输出是这样的:

2012-04-09 - 130 items 
2012-04-14 - 114 items 

我已经试过集团通过在MySQL,但我不知道如果我在使用它的权利:

$sql = mysql_query("SELECT SUM(Items), CreationDate FROM People GROUP BY CreationDate ORDER BY CreationDate DESC") or die(mysql_error()); 
while($row = mysql_fetch_array($sql)) { 
    echo '<p>' . $row['CreationDate'] . ' - ' . $row['SUM(Items)'] . '</p>'; 
} 

除了它以外的其他作品仅在完全匹配创建日期(下至第二个)时对它们进行分组,并且我不确定如何解决该问题。

+1

只是一个小小的提示,你可能想用'mysqli_query'而不是'mysql_query'。 mysql_query是一个旧的API。阅读更多关于它在这里:http://www.php.net/manual/en/mysqlinfo.api.choosing.php – 2012-04-16 22:38:23

回答

4

您需要使用日期功能的CreationDate领域,如:

SELECT SUM(Items), DATE(CreationDate) FROM People GROUP BY DATE(CreationDate) ORDER BY CreationDate DESC 

警告,虽然:使用日期功能会忽略对CreationDate任何索引。如果CreationDate字段被编入索引,那么使用DATE函数并对其进行分组将花费更长的时间。

+0

但我怎么不考虑到最后的时间? – Talon 2012-04-16 22:34:35

+2

@Talon'DATE()'仅提取日期时间值中的日期部分。 – 2012-04-16 22:36:14

+0

甜蜜的作品完美! – Talon 2012-04-16 23:02:10