2013-05-10 7 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 

, 나는 votes에 표를 계산 한 후 추가하거나 좋아하는 그들을 빼기 다음 SQL을 실행합니다. 상기 쿼리를 사용하는 경우

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 9에 대한 결과는 1(2-1+0=1)이어야합니다. 여기에 0으로 표시됩니다.

내가 잘못 될 곳을 어떻게 볼 수 있습니까?

+3

"voteType1 = 부정 투표, voteType2 = 긍정 표" --- 표의 예에서는 1과 0이 있습니다 – zerkms

+0

죄송합니다. 내 잘못이야. 나는 완전히 미쳐가는 것에서 몇 걸음 떨어진다. – Norman

+0

"결과는 -1이므로, 1 (좋아요에서) - 1 = 2"이것은 무엇입니까? – diEcho

답변

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

+0

@Norman 행운을 빕니다 코딩을 즐기십시오 ... –

+0

나는 당신이 할 수있는 몇 가지 더 많은 것을했습니다 (무료가 아닙니다). 연락처 정보는 내 프로필을 참조하십시오. 니가 관심 있으면. 이것을 도와 주셔서 감사합니다. – Norman

관련 문제