让我说我有一个网站,用户注册,上传他们的照片并给对方的照片分数
这里有3个主要表格
users
id , username
images
id , image_name , user_id
scores
voter_id , image_id
我希望得到的用户,他们上传的图片得分最高(全部在一起)...如果您愿意,则按评分排名最高的用户
我认为最好的方法是更改用户表格,如
users
id , username , image_Scores
并计算每次投票的用户分数,并将其存储在image_Scores
列中,但我没有写过这个网站,它已经有几张图片,我不打算在短时间内完成这项工作
有没有办法让目前数据结构得分最高的用户?
答案 0 :(得分:2)
SELECT u.id,
u.username,
count(s.voter_id) as votes
FROM users u
images i,
scores s
WHERE i.user_id = u.id
AND s.image_id = i.id
ORDER BY 3 DESC
LIMIT 10
答案 1 :(得分:0)
SELECT
u.id, u.username, COUNT(*) as image_Scores
FROM
users u
LEFT JOIN images i ON (u.id = i.user_id)
LEFT JOIN scores s ON (i.id = image_id)
GROUP BY
u.id, u.username
ORDER BY
COUNT(*) DESC
LIMIT 3