假设我有一个网站,用户注册,上传他们的照片并给彼此的照片打分
这里有3个主要的表
users
id , username
images
id , image_name , user_id
scores
voter_id , image_id
我想让用户谁,他们上传的图像有最高分(所有在一起)…
我认为最好的方法是像 那样修改users表。users
id , username , image_Scores
和计算用户得分与每次投票,并将其存储在image_Scores
列,但我没有写这个网站,它已经有几千张图片,我不打算在短时间内这样做。
是否有任何方法可以使用当前数据结构获得最高图像评分的用户?
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
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