0

このようにテーブルを呼び出しましたvotes

"id"    "votedElm"  "voteType"  "voteProcessed" "country"
"1"         "4" "0" "0" "US"
"2"         "5" "0" "0" "US"
"3"         "6" "1" "0" "US"
"4"         "8" "0" "0" "US"
"5"         "9" "0" "0" "US"
"6"         "10"    "0" "0" "US"
"7"         "10"    "0" "0" "US"
"8"         "10"    "0" "0" "US"
"9"         "8" "1" "0" "US"
"10"    "9" "1" "0" "US"
"11"    "20"    "1" "0" "US"
"12"    "10"    "1" "0" "US"
"13"    "10"    "1" "0" "US"
"14"    "20"    "0" "0" "US"
"15"    "22"    "0" "0" "US"
"16"    "20"    "0" "0" "US"
"17"    "21"    "0" "0" "US"
"18"    "10"    "0" "0" "US"
"19"    "10"    "0" "0" "US"
"20"    "20"    "0" "0" "US"
"21"    "21"    "0" "0" "US"
"22"    "22"    "0" "0" "US"
"23"    "22"    "0" "0" "US"
"24"    "22"    "1" "0" "US"

私はこのSQLを使用して、それから明確なlikeとsumを取得します。 select votedElm, count(votedElm) from votes where country = 'US' and voteType = 0 group by votedElm;

ただし、その表には がありvoteType 0 and 1ます。0+投票で1あり、-投票です。

同じSQLで、+投票を追加し-て合計から投票を差し引くことができますか? これに対して2つの異なるクエリを用意する代わりに?

くわ私はこれを行うことができますか?

4

4 に答える 4

1
SELECT votedElm, count(votedElm), 
    SUM(IF(voteType = 0, 1, -1)) AS totalVotes
FROM votes 
WHERE country = 'US' and voteType = 0 
GROUP BY votedElm;
于 2013-05-09T07:28:21.377 に答える
1

はい、次のように:

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

ここで実際にそれを見てください:

于 2013-05-09T07:26:26.220 に答える
0

のようにしてみてください

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

または、次のように試すことができます

$sql1 = "SELECT SUM(votedElm) AS count 
FROM `votes` 
WHERE country = 'US' and voteType = '0' 
GROUP BY votedElm";
$res1 = my_sql_query($sql1);

$sql2 = "SELECT SUM(votedElm) AS count 
FROM `votes` 
WHERE country = 'US' and voteType = '1' 
GROUP BY votedElm";
$res2 = my_sql_query($sql2);

それから

$res = $res1[0]['count'] - $res2[0]['count'];
于 2013-05-09T07:30:58.777 に答える