Я считаю ответы и не знаю, как это автоматизировать. - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть ответы из базы данных, и я могу посчитать 1 сейчас, но я хочу показать количество раз, когда выбирается ответ. Я не знаю, как это сделать. Например, я хочу посчитать количество раз, когда «answer_id» (идентификатор ответа) 1 и 2 отвечают в «question_id» (вопрос)

Я пытался установить другое значение, если оно выше, но этоу меня не получилось. The database

<?php  
$conn = mysqli_connect('localhost', 'root','','survey_cms_4people');
if (!$conn){
    echo "DATABSE ERROR!";
}

$variable = 1;
$countAnswerQuery = "SELECT COUNT(`answer_id`) FROM survey_answers WHERE question_id=$variable AND answer_id=$variable ";
$countanswerresult = mysqli_query($conn, $countAnswerQuery);
while ($row = mysqli_fetch_array($countanswerresult)) {
    echo $row[0];
}


?> 

Я хочу иметь возможность подсчитывать их автоматически и не писать SQL-запрос для каждого вопроса / ответа.

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Вы хотите сгруппировать по идентификатору ответа.

SELECT answer_id, COUNT(*) as count, question_id FROM survey_answers WHERE survey_id = $survey GROUP BY question_id , answer_id ORDER BY count DESC;

Это покажет вам подсчет всех ответов на все вопросы данного опроса.

Это, вероятно,дубликат:

MySQL: подсчитать вхождения значений DISTINCT

1 голос
/ 30 сентября 2019

Например, я хочу посчитать, сколько раз 'answer_id' (идентификатор ответа) 1 и 2 отвечают в 'question_id' (вопрос)

Вы можетеагрегируйте результаты по question_id и answer_id, чтобы узнать, сколько раз каждый ответ был выбран для каждого вопроса, например:

SELECT question_id, answer_id, COUNT(*) cnt
FROM survey_answers 
GOUP BY question_id, answer_id

Если вы хотите отфильтровать данный вопрос, вы можете добавитьWHERE предложение:

SELECT question_id, answer_id, COUNT(*) cnt
FROM survey_answers 
WHERE question_id = ?
GOUP BY question_id, answer_id
...