2017-09-12 8 views
0

質問テーブルに3つのテーブル(ユーザ、質問、回答)があります。私はid_questionとquestionを持っています。回答テーブルにはid_question、user_idとanswerがあります。私は質問ごとの答えの数を私に与えるQueuryを実行したい。私はanswerd(id_questionではない)と3つの他の列(yes、no、maybe)を持つ列が、その答えが質問に与えられた回数を持つ列が必要です。質問欄には繰り返し質問をすることはできません(ユーザーは同じ質問に回答して別の回答を与えることができますが、回答する回数は欲しい、それぞれの質問には答えてもらえません)。私はこれまで何をしたかHERESに他の2phpmyadminのカウントステートメント

を作成:

SELECT questions.question,COUNT(answers.answer) As Yes 
FROM answers 
INNER JOIN questions ON questions.id_question=answers.id_question 
WHERE answer='yes' GROUP BY question 
ORDER BY questions.id_question ASC 

答えて

0
SELECT questions.question, 
    SUM(IF(answer='yes', 1, 0)) AS Yes, 
    SUM(IF(answer='no', 1, 0)) AS No, 
    SUM(IF(answer='maybe', 1, 0)) AS Maybe 
FROM answers 
INNER JOIN questions ON questions.id_question=answers.id_question 
GROUP BY question 
ORDER BY questions.id_question ASC 
+0

うわー!出来た。あなたは私に、SUM IFの仕事がどのようにあるのかを説明できますか? –

+0

「IF」文は、 'answer = 'yes''が真であれば「1」を、偽なら「0」を返します。次に、「IF」文の結果を「SUM」して、基本的な計算:「1 + 0 + 1 + 1」になります。より良い理解のために、 'GROUP BY'と' SUM'関数なしで同じクエリを実行しようとすると、集計の前にあなたのデータがどのように見えるでしょう。 – icoder