Mysql子查询投票总数

Mysql子查询投票总数,mysql,Mysql,我有一张投票表,旁边还有一张“想法”(条目)表 基本上,我想要检索一个对象,该对象可以被读取为: id, name, title, votes : { up : x, down : y } 所以这很简单,直到我进入子查询,需要对投票的正值和负值进行两组求和 SELECT id,name,title FROM ideas LEFT JOIN votes ON ideas.id = votes.idea_id 我的(简化)投票表如下所示: id idea_id value 其中,val

我有一张投票表,旁边还有一张“想法”(条目)表

基本上,我想要检索一个对象,该对象可以被读取为:

id,
name,
title,
votes : {
  up : x,
  down : y
}
所以这很简单,直到我进入子查询,需要对投票的正值和负值进行两组求和

SELECT id,name,title FROM ideas
LEFT JOIN votes ON ideas.id = votes.idea_id
我的(简化)投票表如下所示:

id
idea_id
value
其中,
value
可以是正数或负数
int

如何在单个查询中获取上述对象

奖励点:如何获得一个将正面和负面投票相加的
聚合
字段?

试试这个。。没有测试

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;
选择
身份证件
名称
标题
求和(如果值>0,则值结束),
向下求和(当值<0时,则值结束)
从观念
LEFT JOIN Voces ON ideas.id=voces.idea\u id
按id分组;

参见
SUM(CASE WHEN…
它将按哪个
id
进行分组
ideas.id
?而且,这不会使它成为
投票
子节点-实现这一点的任何方法,或者重构我的前端会更容易吗?如果没有求和,它会返回0吗?等待SQL专家们醒来,我确信这是可以解决的。(我的另一个猜测是子查询,但这可能很慢。)啊,是的,很酷
=)
-我刚刚尝试过,如果没有votesbtw,它会返回
NULL
。。您的“红利点数”应该是第三个总和(),不受数值限制:D