2013-04-28 96 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