我有 3 张 table 想要加入:
pictures
--------
id user_id link
users
-----
id name
votes
-----
id user_id picture_id
我想要做的是找到登录的特定用户的每张图片的总投票数。几乎我循环每张图片,如果用户对图片投票,他们就不能再次投票。
Desired output:
---------------
id user_id link user_name total_votes
1 5 [link] Sean 5
到目前为止我有这样的事情:
SELECT
p.*, u.username, d.total_votes
FROM pictures p
LEFT JOIN users u
ON p.user_id = u.id
LEFT JOIN
(
select id, picture_id, count(id) as has_voted from votes
) d on d.picture_id = p.id
我得到了所有图片,但所有投票都被添加到第一个记录中。
编辑
抱歉,说得不清楚
这就是我数据库中的每张图像。假设我以 Sean (user_id 1) 身份登录,我想显示我对每个图像投票的次数。
user_id 是上传图片的人。
最佳答案
(更新)尝试:
Select p.id, p.user_id, p.link, u.name, count(v.id) As total_votes
from pictures p
join users u on p.user_id = u.id
left join votes v on p.id = v.picture_id and v.user_id = ?
group by p.id
关于mysql - 连接表问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16498623/