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