好的,所以我有 2 个表:
images votes
---------------------------- --------------------
image_id | name | square_id vote_id | image_id
---------------------------- --------------------
1 someImg 14 1 45
2 newImg 3 2 18
3 blandImg 76 3 1
... ...
n n
这是一对多的关系。每个图像可以有多个投票,但一个投票只能与一个图像相关。我正在尝试生成一个连接查询,它将显示图像 ID 以及它在指定条件下的投票数(例如,基于 square_id
)。因此查询结果看起来类似于:
query_result
----------------------
image_id | vote_count
----------------------
18 46
26 32
20 18
...
55 1
但我能做的最好的是:
query_result
----------------------
image_id | vote_id
----------------------
18 46
18 45
18 127
26 66
26 43
55 1
看到问题了吗?每个 image_id
都针对它拥有的每个 vote_id
多次列出。这是产生这个的查询:
SELECT images.image_id, votes.vote_id
FROM votes JOIN images ON images.image_id=votes.image_id
我似乎无法创建一个 vote_count
列,该列是该图像拥有的所有投票的总和。有没有什么方法可以让我使用 count()
函数来做到这一点,而我根本不知道?
最佳答案
您需要 GROUP BY images.image_id
并使用 COUNT(votes.vote_id)
:
SELECT images.image_id, COUNT(votes.vote_id) AS cote_count
FROM votes
JOIN images ON images.image_id=votes.image_id
GROUP BY images.image_id
关于mysql - SQL加入一对多关系 - 计算每张图片的票数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18571270/