【问题标题】:Mysql subquery sum of votesMysql子查询总票数
【发布时间】:2013-09-01 03:00:45
【问题描述】:

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

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

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

所以这很简单,直到我到达子查询并且需要对投票的正负值进行两组 SUM。

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

我的(简化的)投票表如下所示:

id
idea_id
value

其中value 可以是正数或负数int

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

加分项:我如何获得一个aggregate 字段,其中正面和负面的投票加在一起?

【问题讨论】:

标签: mysql


【解决方案1】:

试试这个.. 未测试。

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;

【讨论】:

  • 它将按哪个id 分组? ideas.id ?
  • 另外,这不会使它成为 votes 子节点的节点 - 有什么方法可以实现这一点,或者重构我的前端会更容易吗?如果没有 SUM,它会返回 0 吗?
  • 等待SQL专家醒来,我确定这是可以解决的。 (我的另一个猜测是子查询,但这可能很慢..)
  • 啊,好酷=) - 我刚试过,如果没有投票,它会返回NULL
  • btw.. 你的“奖励点”应该是第三个 sum() 没有价值限制。 :D
猜你喜欢
  • 2020-03-29
  • 1970-01-01
  • 2011-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多