2013-07-04 100 views
0

即時通訊與我的PHP腳本有點問題,計數與特定調查問卷ID匹配的ID列條目。結果似乎相當反社會的,只是不想因爲某些原因組了....按ID分組不會分組在PHP

 $sql30 = <<<SQL 
    SELECT id, COUNT(id) 
    FROM `QuestionnaireAnswers` 
    WHERE questionnaireID='$questionnaireID' 
    GROUP BY id 
    SQL; 
    if(!$result30 = $db->query($sql30)){ die('There was an error running the query [' . $db->error . ']');} 
    while($row30 = $result30->fetch_assoc()){ 
     if ($row30['COUNT(id)'] == '' OR $row30['COUNT(id)'] == '0'){$numberofresponses = '0';} 
     else {$numberofresponses = $row30['COUNT(id)'];}  
    echo '<td>'.$numberofresponses.'</td>'; 
    } 

如果我使用的1327809154樣本questionnaireID並運行在phpMyAdmin以下查詢:

SELECT id, COUNT(id) 
FROM `QuestionnaireAnswers` 
WHERE questionnaireID = '1327809154' 
GROUP BY id 
LIMIT 0 , 30 

我得到如下結果:

id COUNT(id) 
129 1 
130 1 
131 1 
132 1 
133 1 
134 1 
277 1 
278 1 
280 1 
281 1 
282 1 
284 1 
290 1 
419 1 
424 1 
425 1 
426 1 

所以.....這似乎是計數結果,而不是將它們分組給我一個總.........

編輯,我現在已經把它改爲:

 $sql30 = <<<SQL 
    SELECT questionnaireID, COUNT(questionnaireID) 
    FROM `QuestionnaireAnswers` 
    WHERE questionnaireID='$questionnaireID' 
    GROUP BY questionnaireID 
    SQL; 
    if(!$result30 = $db->query($sql30)){ die('There was an error running the query [' . $db->error . ']');} 
    while($row30 = $result30->fetch_assoc()){ 
     if ($row30['COUNT(questionnaireID)'] == '' OR $row30['COUNT(questionnaireID)'] == '0'){$numberofresponses = '0';} 
     else {$numberofresponses = $row30['COUNT(questionnaireID)'];} 
    echo '<td>'.$numberofresponses.'</td>'; 
    } 

這將返回:

questionnaireID COUNT(questionnaireID) 
1327809154 17 

這部作品在phpMyAdmin的,但有些沒有理由回到我的腳本,該表的列,其中數應該是空白的。

回答

1

您的ID都是唯一的,所以不能分組。只有相同的數值被分組在一起並且它們的計數總結起來。

+0

啊我明白了,所以最好用問卷ID進行分組? –

+0

好吧,似乎在phpmyadmin工作,如果我使用questionnaireID,因爲它返回17,但由於某種原因在我的腳本輸出我仍然有一個空白列在我的表中。 –

+0

是的,如果你在結果中需要它。否則,你可以選擇'COUNT(id)'。 – joe776

2

你查詢簡單地讓所有的IDS和因爲每個人都是獨一無二的,它顯示計數爲1爲他們每個人,而不是得到的答覆數量計數只是使用

SELECT COUNT(id) FROM `QuestionnaireAnswers` 
WHERE questionnaireID = '1327809154' 
+0

因爲'count(id)'給出了ids的數量,這實際上是該問卷的答覆數 – kevinm

+0

我已經編輯了我的問題和最新的結果 –

0

好吧,我現在對它進行了排序,編輯之後它沒有工作的原因是因爲我沒有在while循環中定義questionnaireID。 $ questionnaireID = $ row ['questionnaireID'];

0

這將返回不同非空值的數量。

SELECT COUNT(DISTINCT `id`) 
FROM `QuestionnaireAnswers` 
WHERE questionnaireID = '1327809154' 

你不需要GROUP BY,因爲你只有一個questionnaireID