いま質問投稿機能を作っているのですが、2つのSelect文の結果を横に結合したいです。
まず下のようなテーブルがあり、
mysql> select * from questionReaction;
+------------+--------+------------+----------+
| reactionID | userID | questionID | reaction |
+------------+--------+------------+----------+
| 7 | 1 | 1 | 0 |
| 8 | 2 | 1 | 0 |
| 9 | 3 | 1 | 1 |
| 10 | 4 | 1 | 0 |
| 11 | 5 | 1 | 0 |
| 12 | 6 | 1 | 1 |
| 13 | 7 | 1 | 0 |
| 15 | 1 | 2 | 1 |
| 16 | 2 | 2 | 1 |
| 17 | 3 | 2 | 1 |
| 18 | 4 | 2 | 0 |
| 19 | 5 | 2 | 1 |
| 20 | 6 | 2 | 0 |
| 21 | 7 | 2 | 0 |
| 22 | 1 | 3 | 0 |
| 23 | 2 | 3 | 1 |
| 24 | 3 | 3 | 0 |
| 25 | 4 | 3 | 0 |
| 26 | 5 | 3 | 1 |
| 27 | 6 | 3 | 0 |
| 28 | 7 | 3 | 1 |
+------------+--------+------------+----------+
reactionが0のみのデータが
mysql> select questions.questionID, count(questions.questionID) as goodCount from questionReaction inner join questions on questionReaction.questionID = questions.questionID where questionReaction.reaction = 0 group by questions.questionID;
+------------+-----------+
| questionID | goodCount |
+------------+-----------+
| 1 | 5 |
| 2 | 3 |
| 3 | 4 |
+------------+-----------+
reactionが1のデータが
mysql> select questions.questionID, count(questions.questionID) as badCount from questionReaction inner join questions on questionReaction.questionID = questions.questionID where questionReaction.reaction = 1 group by questions.questionID;
+------------+----------+
| questionID | badCount |
+------------+----------+
| 1 | 2 |
| 2 | 4 |
| 3 | 3 |
+------------+----------+
で得られるのですが、この結果を
+------------+-----------+----------+
| questionID | goodCount | badCount |
+------------+-----------+----------+
| 1 | 5 | 2|
| 2 | 3 | 4|
| 3 | 4 | 3|
+------------+-----------+----------+
のように表示したいです。二つの結果をunionを用いると縦に並んでしまったのでやり方が分かりませんでした。
あともしできればgoodCountがbadCountより大きい項目のみを以下のようにする
+------------+-----------+----------+
| questionID | goodCount | badCount |
+------------+-----------+----------+
| 1 | 5 | 2|
| 3 | 4 | 3|
+------------+-----------+----------+
SQLも教えていただきたいです。よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー