2013-04-28 116 views
0

HI我有一个表中有一个时间戳列,我试图做的是将表的结果按天分组并计算出有多少条目存在于当天的表格以及时间戳列表。Group By Timestamp day没有返回任何结果

下面是我使用它的代码,但它没有返回任何结果。

$query1 = "SELECT COUNT(*), DAYOFYEAR(timestamp) FROM all_count GROUP BY DAYOFYEAR(timestamp)"; 
$result = mysql_query($query1); 
while($row = mysql_fetch_array($result)) 
{ 
echo $row['timestamp'];  
echo $row['count']; 
} 

回答

0

因为您没有正确调用它,请尝试使用别名并调用别名。

改变这种

SELECT COUNT(*) , DAYOFYEAR(timestamp) 

SELECT COUNT(*) as count, DAYOFYEAR(timestamp) as days 

echo $row['timestamp']; 

echo $row['days']; 

这里应该是你的代码

$query1 = "SELECT `timestamp` ,COUNT(*) as count, DAYOFYEAR(timestamp) as days FROM all_count GROUP BY DAYOFYEAR(timestamp)"; 
    $result = mysql_query($query1); 
    while($row = mysql_fetch_array($result)) 
{ 
echo $row['days'];  
echo $row['count'].'<br />'; 
    } 
+0

谢谢,但并不能使它仍然没有返回结果 – user1691024 2013-04-28 13:54:17

+0

尝试更新的答案 – 2013-04-28 13:56:19

+0

谢谢任何​​区别,这同样只是返回一个数字的什么其他。 – user1691024 2013-04-28 14:07:01

2

结果集不包含列timestampcount。它确实有COUNT(*)DAYOFYEAR(timestamp)。使用别名获取你想要的名字。

您可以修改您的查询,像这样:

SELECT COUNT(*) as count, 
    DAYOFYEAR(timestamp) as timestamp 
FROM all_count 
GROUP BY DAYOFYEAR(timestamp) 
+0

嗨,感谢,返回一个数字?这是对的,也许我是以错误的方式去做的,但我想要做的是将时间戳按天分组,并显示那天有多少时间戳。 – user1691024 2013-04-28 13:57:34

+0

我认为这就是这样做的。你有错误吗?确保你已经打开了错误和警告。您得到_no results_这一事实意味着您没有打开警告。 – Halcyon 2013-04-28 13:59:46

0

那么技术上的答案@Frits的面包车坎彭是正确的,但它是非常低效的,如果你在表中的行数过多。因为在分组之前,每个时间戳都会被转换为一年一天,而且这样做成本很高。

正确的解决方案是在表格中添加一个新列,例如“dayofyear”,然后计算“timestamp”列中的值。然后,你可以做一个基本的和高效的分组用下面的查询:

SELECT COUNT(*) as count FROM all_count GROUP BY dayofyear