投票系统,关系数据库,SQL查询

时间:2015-10-01 13:37:57

标签: mysql sql voting-system

我想用两个表来设计投票系统。

第一张表包含候选人'索引和名称。

另一个包含选民支持的索引,选民和候选人指数。

一位选民可以支持多名候选人。

我想要一个显示候选人的SQL查询'名称及其支持者的数量。

所以结果看起来像

John 12,Bob 8,David 3 ......

SELECT `name`, COUNT(table2.voter) AS `count` 
FROM `table1` 
LEFT JOIN `table2` 
   ON table1.idx = table2.support 
ORDER BY COUNT(table2.voter) DESC;

上述查询只提供了一行,选民总数。

任何人都可以给我任何提示吗?

2 个答案:

答案 0 :(得分:2)

SELECT `name`, COUNT(table2.voter) AS `count` 
FROM `table1` 
LEFT JOIN `table2` ON table1.idx = table2.support
GROUP BY `name`
ORDER BY COUNT(table2.voter) DESC;

您错过了group by,因此只获得了第一个结果。

答案 1 :(得分:1)

您需要GROUP BY非聚合列(name),否则查询将默认为一个组;整个结果集;并选择一个任意name

   SELECT `name`, COUNT(table2.voter) AS `count` 
     FROM `table1` 
LEFT JOIN `table2` 
       ON table1.idx = table2.support
 GROUP BY `name` 
 ORDER BY count DESC;

您可以在ORDER BY中使用列别名,因此我也对此进行更新