0

我的 php 脚本有点问题,该脚本计算与某个问卷 id 匹配的 id 列条目。结果似乎很反社会,只是出于某种原因不想分组....

        $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 的示例问卷 ID 并在 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 中有效,但由于某种原因,我的脚本中没有返回任何内容,计数应该为空的表列是空白的。

4

4 回答 4

2

您的查询只是获取所有 id 并且由于它们中的每一个都是唯一的,因此将它们中的每一个的计数显示为 1,而不是获取仅使用的响应数的计数

SELECT COUNT(id) FROM `QuestionnaireAnswers` 
WHERE questionnaireID =  '1327809154'
于 2013-07-04T08:30:07.457 回答
1

您的 ID 都是唯一的,因此无法分组。只有相等的值被组合在一起,并且它们的计数相加。

于 2013-07-04T08:25:40.187 回答
0

好的,我现在对其进行了排序,编辑后它不起作用的原因是因为我没有在while循环中定义问卷ID。$questionnaireID = $row['questionnaireID'];

于 2013-07-04T08:39:22.330 回答
0

这将返回不同非 NULL 值的数量。

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

你不需要GROUP BY,因为你只有一个questionnaireID

于 2013-07-04T08:40:13.473 回答