计算比赛的投票数

时间:2020-07-30 15:19:22

标签: mysql

上下文是图片竞赛。 因此,有一张表格图片(pict_id,标题),一张表格用户(user_id,用户名)和一张表格表决(user_id,picture_id)。 对于图片表的每个项目,我如何获得票数? 预先感谢您的帮助

1 个答案:

答案 0 :(得分:0)

由于您不希望获得特定图片的投票权,因此需要加入(如果您也想要获得图片的标题,否则,如果您不想获得标题,那么您可以得到picture_id,而没有用户(投票)对于此特定picture_id,仅使用一张表格图片和票表,然后检查该一张特定图片有多少user_id。您可以使用group by子句为特定的picture_id计算user_id来做到这一点。

假设:

在“图片”表中有以下条目:

pict_id | Title
  1       Image.jpg
  2       Image1.png
  3       Image2.png

在投票表中有以下条目:

user_id | picture_id
1001        1
1002        1
1003        2
1004        2
1005        1

然后,以下查询将不给出特定图片的投票数:

select pic.pict_id, pic.tile, count(v.user_id) as Votes from 
    picture pic left join votes v 
    on pic.pict_id = v.picture_id
    group by v.picture_id;

输出:

pict_id  | title    | Votes
  1       image.jpg     3
  2       image1.png    2
  3       Image2.png    0

如果仅在输出中需要pict_id和Votes,则可以尝试以下查询:

select picture_id, count(user_id) from picture group by picture_id;

要了解有关mysql中聚合函数的更多信息,请参考以下链接:https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html

相关问题