1

私がウェブサイトを持っていて、ユーザーが登録し、写真をアップロードして、お互いにスコアを付けたとしましょう

ここに3つのメインテーブルがあります

users
id , username

images
id , image_name , user_id

scores 
voter_id , image_id

アップロードされた画像のスコアが最も高いユーザーを取得したい (すべて一緒に)... スコアで上位のユーザー

これを行う最善の方法は、ユーザーテーブルを次のように変更することだと思います

users
id , username , image_Scores

各投票でユーザースコアを計算し、列に保存しimage_Scoresますが、私はこのウェブサイトを書いていません.

現在のデータ構造で最高の画像スコアを持つユーザーを取得する方法はありますか?

4

2 に答える 2

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
于 2013-05-26T13:52:39.843 に答える
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
于 2013-05-26T13:52:55.537 に答える