Php 获取得分最高的用户,但在得分表中没有用户id

Php 获取得分最高的用户,但在得分表中没有用户id,php,mysql,Php,Mysql,假设我有一个网站,用户注册,上传他们的图片,并给彼此的图片打分 这里有三张主要的桌子 users id , username images id , image_name , user_id scores voter_id , image_id 我想让那些上传的图片得分最高的用户(加在一起)。。。如果愿意,按分数排名前几名的用户 我认为最好的方法是像这样更改用户表 users id , username , image_Scores 计算每次投票的用户分数,并将其存储在image\u

假设我有一个网站,用户注册,上传他们的图片,并给彼此的图片打分

这里有三张主要的桌子

users
id , username

images
id , image_name , user_id

scores 
voter_id , image_id
我想让那些上传的图片得分最高的用户(加在一起)。。。如果愿意,按分数排名前几名的用户

我认为最好的方法是像这样更改用户表

users
id , username , image_Scores
计算每次投票的用户分数,并将其存储在
image\u Scores
列中,但我没有写这个网站,它已经有数千张图片,我不打算在短时间内这么做


有没有办法用当前的数据结构让用户获得最高的图像分数

您可以使用SQL joinsthaqnx实现这一点,什么是
orderby3
orderby3
表示按所选数据集中的第三列排序,即按
投票
列排序。。。当它是聚合列时,不能按名称指定投票,我讨厌按计数排序(s.voter\u id)
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