Более точный способ подсчета ответов на опрос от mysql db - PullRequest
0 голосов
/ 15 июля 2011

В настоящее время я использую этот код для подсчета ответов на опрос:

$VERYHAPPY = mysql_query("SELECT * FROM answers, complete WHERE (answers.uniqueID = complete.uniqueID) AND (complete.timestamp) IS NOT NULL AND (answers.surveyID='$surveyID') AND QID = '$QID' AND response = 'VERY HAPPY' ");
$HAPPY = mysql_query("SELECT * FROM answers, complete WHERE (answers.uniqueID = complete.uniqueID) AND (complete.timestamp) IS NOT NULL AND (answers.surveyID='$surveyID') AND QID = '$QID' AND response = 'HAPPY' ");
$DONTKNOW = mysql_query("SELECT * FROM answers, complete WHERE (answers.uniqueID = complete.uniqueID) AND (complete.timestamp) IS NOT NULL AND (answers.surveyID='$surveyID') AND QID = '$QID' AND response = 'DONT KNOW' ");
$UNHAPPY = mysql_query("SELECT * FROM answers, complete WHERE (answers.uniqueID = complete.uniqueID) AND (complete.timestamp) IS NOT NULL AND (answers.surveyID='$surveyID') AND QID = '$QID' AND response = 'UNHAPPY' ");
$VERYUNHAPPY = mysql_query("SELECT * FROM answers, complete WHERE (answers.uniqueID = complete.uniqueID) AND (complete.timestamp) IS NOT NULL AND (answers.surveyID='$surveyID') AND QID = '$QID' AND response = 'VERY UNHAPPY' ");

 $VERYHAPPYcount = mysql_num_rows($VERYHAPPY);
 $HAPPYcount = mysql_num_rows($HAPPY);
 $DONTKNOWcount = mysql_num_rows($DONTKNOW); 
 $UNHAPPYcount = mysql_num_rows($UNHAPPY);
 $VERYUNHAPPYcount = mysql_num_rows($VERYUNHAPPY); 
  echo "VERY HAPPY = $VERYHAPPYcount</br>HAPPY = $HAPPYcount</br>DON'T KNOW = $DONTKNOWcount</br>UNHAPPY = $UNHAPPYcount</br>VERY UNHAPPY = $VERYUNHAPPYcount";  

, как вы можете видеть - это действительно грязно!Есть ли лучший способ сделать это?Я пробовал COUNT и GROUP BY, но не могу заставить их работать.Спасибо

1 Ответ

0 голосов
/ 15 июля 2011

Вы можете попробовать этот SQL (который я не тестировал) -

SELECT count(*) as recordcount, response 
FROM answers, complete 
WHERE (answers.uniqueID = complete.uniqueID) 
AND (complete.timestamp) IS NOT NULL 
AND (answers.surveyID='$surveyID') 
AND QID = '$QID'
GROUP BY response

Чтобы получить результаты в PHP, вы можете попробовать что-то вроде этого (я не могу протестировать код PHP, поэтому яоснованный на приведенном ниже коде на этом коде - http://php.net/manual/en/function.mysql-query.php и надеемся на лучшее! Код ниже почти наверняка будет содержать ошибки, но, надеюсь, даст вам представление о том, как это можно сделать)

//assign sql above to $query variable prior to doing this
$result = mysql_query($query);

while ($row = mysql_fetch_assoc($result)) {
    echo $row['response'] & " = " & $ row['recordcount'] & "count</br>"
}
...