これは私の最初の質問ですので、私はそれを台無しにしないことを願っています。 http://sqlfiddle.com/#!9/7f2b5c/7Mysqlのクエリで条件が他の列の合計
我々は質問、回答、question_typesとanswer_typesを持っている:
は、ここで私は私がそれを説明するために作られたSQLフィドルです。
それぞれの質問について、どれくらいの人が各answer_typeに回答したのか、またその質問に回答した人の数がわかりますが、合計を取得できません。
これは私が取得していますものです:
id | fk_question_type | description | num | value | total
1 | 1 | How was the breakfast? | 0 | Bad | 0
1 | 1 | How was the breakfast? | 1 | Good | 1
1 | 1 | How was the breakfast? | 0 | Indifferent| 0
1 | 1 | How was the breakfast? | 2 | Very good | 2
2 | 1 | How was the lunch? | 0 | Bad | 0
2 | 1 | How was the lunch? | 1 | Good | 1
2 | 1 | How was the lunch? | 0 | Indifferent| 1
2 | 1 | How was the lunch? | 1 | Very good | 1
これは私が好きなものです:
id | fk_question_type | description | num | value | total
1 | 1 | How was the breakfast? | 0 | Bad | 3
1 | 1 | How was the breakfast? | 1 | Good | 3
1 | 1 | How was the breakfast? | 0 | Indifferent| 3
1 | 1 | How was the breakfast? | 2 | Very good | 3
2 | 1 | How was the lunch? | 0 | Bad | 2
2 | 1 | How was the lunch? | 1 | Good | 2
2 | 1 | How was the lunch? | 0 | Indifferent| 2
2 | 1 | How was the lunch? | 1 | Very good | 2
私が今しようとしているクエリ:
SELECT id, fk_question_type, description, num, value, SUM(num) AS totalAnswers
FROM (
(SELECT q.id, q.fk_question_type, q.description, COUNT(a.id) AS num, at.value
FROM answer a
LEFT JOIN question q ON a.`fk_question`=q.`id`
LEFT JOIN answer_type at ON at.id = a.`fk_answer_type`
GROUP BY q.id, at.id ORDER BY q.id, at.id)
UNION ALL
(SELECT q.id, q.fk_question_type, q.description, 0 AS num, at.value
FROM answer a
LEFT JOIN question q ON a.`fk_question`=q.`id`
LEFT JOIN answer_type at ON at.fk_question_type=q.fk_question_type
GROUP BY q.id, at.id ORDER BY q.id, at.id)
) AS T
WHERE fk_question_type = 1
GROUP BY id, value ORDER BY id
他の列を維持しながら、同じIDを持つ行のnumをSUMでSUMにする方法はありますか?
あなたは本当に代わりに 'INNER JOIN'の' LEFT JOIN'を使用する必要がありますか?対応する質問なしに本当に答えがありますか? – Barmar
フィドルのテーブルから「答え」を見ると、「朝食はどうだった?」「昼食はどうだった?」「もう一度やってきますか?」という質問がそれぞれ3回尋ねられました。 「夕食はどうだった?」という質問は二度しか聞かれなかった。それが注目されているので、numで見たいものと 'total'で何を見たいのかを詳しく教えてもらえますか? –
@DhruvSaxena私は 'num'をすでにどのようにしたいのですか?'朝食はどうでした? 'は0回、Goodは1回、無関心は0回、非常に良い。 'トータル'は質問の回答回数でなければならないので、 '朝食はどうだったの? 'の行ごとに3回です。 申し訳ありませんが、私はそれを明確にしませんでした。 – EnricSV