我有3张桌子要加入:
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是谁上传了图片。
答案 0 :(得分:1)
(更新)尝试:
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
答案 1 :(得分:0)
试试这个
Select p.id, p.user_id, p.link, u.name,(CASE count(v.id) WHEN NULL THEN 0 ELSE count(v.id) END ) as total_votes
from pictures p
join users u on p.user_id = u.id
join votes v on (v.user_id = u.id and v.picture_id = p.id)
where v.id is not null
group by p.id