COUNT() が引数として * とともに使用され、GROUP BY が何をカウントするかを決定するのを常に見てきましたが、サブクエリ、グループ化、および結合を行わなくても、さまざまなものをカウントできると確信しています (私が今やっていることです)。
SO の簡略化されたバージョンから例を作成しましょう。
Table Question
idQuestion | title | idUser
Table Answer
idAnswer | idQUestion | text | idUser
Table Vote
idVote | idAnswer | type | idUser
Table Comment
idComment | idAnswer | text | idUser
すべての回答に対するコメントと投票の数を知るには、次のようにします。
SELECT idAnswer, votes, comments FROM
(SELECT idAnswer, count(*) AS votes FROM Answer A
JOIN Vote B ON A.idAnswer=B.idAnswer
GROUP BY idAnswer) AS X
JOIN
(SELECT idAnswer, count(*) AS comments FROM Answer A
JOIN Comment B ON A.idAnswer=B.idAnswer
GROUP BY idAnswer) AS Y
ON X.idAnswer=Y.idAnswer
これは副選択なしで行うことができますか? それらを避けることによって何かが達成されますか?
同じクエリで反対票と賛成票をカウントするにはどうすればよいですか?