1

「アイデア」(エントリ)の表と並んで、投票の表があります

基本的に、次のように読み取れるオブジェクトを取得したいと考えています。

id,
name,
title,
votes : {
  up : x,
  down : y
}

したがって、サブクエリに到達し、投票の正と負の値に対して 2 セットの SUM を実行する必要があるまでは、十分に単純です。

SELECT id,name,title FROM ideas
LEFT JOIN votes ON ideas.id = votes.idea_id

私の(簡略化された)投票表は次のようになります。

id
idea_id
value

wherevalueは正または負のいずれかintです。

単一のクエリで上記のオブジェクトを取得するにはどうすればよいですか?

ボーナス ポイント:aggregate賛成票と反対票を合計するフィールドを取得するにはどうすればよいですか?

4

1 に答える 1

2

これを試してください..テストされていません。

SELECT 
id,
name,
title, 
SUM(case when value > 0 then value end) up,
SUM(case when value < 0 then value end) down
 FROM ideas
LEFT JOIN votes ON ideas.id = votes.idea_id
GROUP By id;
于 2013-09-01T03:08:29.963 に答える