2013-05-10 108 views
0

这是我的表votes,其中voteType 1 = a negative vote, voteType 0 = a positive vote如何避免-1在这种情况下

"id" "votedElm" "voteType" "voteProcessed" "country" 
"3"  "6"   "1"   "0"    "US"//1-1=0 

"4"  "8"   "0"   "0"    "US"//2+0-1=1 
"9"  "8"   "1"   "0"    "US" 

"5"  "9"   "0"   "0"    "US"//2+0-1=1 
"10" "9"   "1"   "0"    "US" 

,这我的表likes

"id" "type" "parent" "country" "votes" 
    6  10  3   US   1 
    8  10  7   US   2 
    9  10  7   US   2 

在上面,我运行下面的SQL来算票votes,然后添加或减去喜欢他们。

SELECT 
    votedElm, 
    SUM(CASE WHEN voteType = 0 THEN 1 ELSE -1 END) AS Totalcount 
FROM votes 
WHERE country = 'US' 
GROUP BY votedElm; 

然而,对于id 6 in votes,使用上面的查询时,其结果是-1。所以,1 (in likes) minus -1 = 2。我想要的结果是0。 另外,8 and 9votes表中,结果应该是1(2-1+0=1)。这里显示为0

你能看到我要出错的地方吗?我该如何解决这个问题?

+3

“voteType 1 =反对票,voteType 2 =正面投票。” ---但在表中的例子中有1和0 – zerkms 2013-05-10 04:41:12

+0

对不起。我的错。我离完全疯了几步之遥。 – Norman 2013-05-10 04:42:47

+0

“的结果是-1因此,1(喜欢)减-1 = 2”这是什么? – diEcho 2013-05-10 04:50:12

回答

3

我想你不想显示negative.So.First中的投票表决比不像减去数数.....尝试像这样...

Select voteby,(Count(votetype)-Sum(Case when votetype=1 then 1 else 0 end)) as b 
    from t group by voteby 

Sql Fiddle Demo

+0

你对我的朋友。你是对的。 – Norman 2013-05-10 05:03:09

+0

@Norman祝好运享受编码... – 2013-05-10 05:04:17

+0

我有更多的事情可以做(不是免费的)。查看我的个人资料获取联系信息如果你有兴趣。感谢您的帮助。 – Norman 2013-05-10 05:08:08

相关问题