サブクエリが必要だと思われるMySQLクエリがあります。多くのコメントのそれぞれに対する「賛成」投票の総数を数え、特定のユーザーが各コメントにすでに投票しているかどうかを判断したいと思います。
ここに私のテーブルがあります:
Comments Table:
comment_id comment acct_id topic_id comment_date
5 hello5 2 1 9:00am
7 hello7 3 1 10:00am
Votes Table:
comment_id vote acct_id topic_id
5 1 1 1
7 1 4 1
5 1 5 1
ここに私が得ている出力があります:
comment_id commenter comment voter sum did_i_vote
5 2 hello5 1 2 1
7 3 hello7 4 1 1
目的の出力は次のとおりです。
comment_id commenter comment voter sum did_i_vote
5 2 hello5 **5** 2 1
7 3 hello7 4 1 1
これが私のクエリです:
SELECT votes.acct_id as voter, comments.comment_id, comment, comments.acct_id as
commenter, SUM(vote) as sum, vote as did_i_vote
from votes
right join comments
on votes.comment_id=comments.comment_id
join accounts on comments.acct_id=accounts.acct_id
where topic_id=1
group by comments.comment_id order by comment_date desc
これら 2 つの出力は、 を除いて同一であることがわかりますvoter
。
私のクエリに欠けているのは、特定のユーザー (たとえば、を使用)voter=acct_id=5
がいずれかのコメントに投票したかどうかを判断する方法です。その条件がなければ、クエリはforがvoter
であるリストの最初のものを選択します。comment_id=5
voter=1
だから私の質問は、次のサブクエリを挿入する必要があると思います:
SELECT from votes where voter='X'
どこで、どのようにかわかりません。from
と上記の間に括弧を入れると機能がvotes
なくなるsum()
ので、行き詰まります。
何かご意見は?