特定のアンケート 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>';
}
サンプルの QuestionnaireID 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 で機能しますが、なんらかの理由でスクリプトに何も返されません。カウントがあるはずのテーブル列が空白です。