0

Web サイトのさまざまなメッセージの投票に関する情報を含むテーブルがあります。テーブルは投票と呼ばれ、ID、メッセージ ID、ユーザー ID、投票によって形成されます。

「messages」テーブルからすべてのデータを取得し、「votations」テーブルで平均投票を計算し、指定されたユーザー (userID を「votations」テーブルにチェック) が既に投票したかどうかを知りたい。これは、メッセージの取得とそれぞれの投票平均のクエリです。

select m.*, AVG(votes) as average_valuation from messages m 
left join votations v on v.messageID = m.id 
group by m.id

userID に POST データが含まれていると仮定すると、クエリは、LEFT JOIN プロセス中にメッセージに投票したかどうかを教えてくれるはずです。どうすればそれができますか?

4

1 に答える 1

0

サブクエリを試す

select 

m.*,
(
select count(1) from messages m1
where m1.id=m.id
and m1.userid=@userid
) as VotedAlready,

AVG(votes)
as average_valuation from messages m 
group by m.id

何かのようなもの..

他のクエリを追加することもできます。

于 2013-07-21T06:01:28.360 に答える