$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>';
}
如果我使用示例问卷ID 1327809154并在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,但有些原因在我的脚本中没有返回任何内容,计数应该为的表列是空白的。
答案 0 :(得分:2)
您的查询只是获取所有ID,因为每个ID都是唯一的,它会为每个ID显示计数为1,而不是计算刚刚使用的响应数
SELECT COUNT(id) FROM `QuestionnaireAnswers`
WHERE questionnaireID = '1327809154'
答案 1 :(得分:1)
您的ID都是唯一的,因此无法对其进行分组。只有相等的值组合在一起并计算其计数。
答案 2 :(得分:0)
好的,我现在对它进行了排序,之所以在编辑之后没有工作,是因为我没有在while循环中定义questionnaireID。 $ questionnaireID = $ row ['questionnaireID'];
答案 3 :(得分:0)
这将返回不同的非NULL值的数量。
SELECT COUNT(DISTINCT `id`)
FROM `QuestionnaireAnswers`
WHERE questionnaireID = '1327809154'
您不需要GROUP BY
,因为您只有一个questionnaireID
。