-1

アップロード数が最も多い上位 3 人のユーザーを返そうとしています。次に、上位 3 人のユーザーそれぞれのアップロード数をカウントします。現在、1 人のユーザーのみが返され、アップロードがそのユーザーに属していない場合でも、カウントはすべてのアップロードをカウントします。

これが私のテーブルのセットアップです:

アップロード: (ID、ユーザー ID、名前、場所、タイプ)

ユーザー: (id、fname、lname、ユーザー名、アバター、国、pw)

SELECT u.id, u.userID, COUNT(us.id) as top_nums, us.username, us.avatar, us.country 
FROM upload u LEFT OUTER JOIN user us ON us.id=u.userID 
ORDER BY top_nums DESC LIMIT 3

事前に助けてくれてありがとう!!

4

4 に答える 4

1

このクエリはあなたの問題を解決すると思います:

SELECT us.id, us.username, us.avatar, us.country, COUNT(u.id) top_nums 
FROM `user` us 
LEFT JOIN upload u ON us.id = u.userId 
GROUP BY u.userID 
ORDER BY top_nums DESC LIMIT 3;
于 2012-12-27T05:03:53.427 に答える
0

GROUP BYクエリに句がありません。

SELECT  u.id, u.userID, COUNT(us.id) as top_nums, us.username, us.avatar, us.country 
FROM    upload u 
        LEFT OUTER JOIN  user us 
            ON us.id=u.userID 
GROUP BY u.id, u.userID, us.username, us.avatar, us.country 
ORDER BY top_nums DESC 
LIMIT 3

ただし、このクエリは同順位を処理しないことに注意してください。

于 2012-12-27T05:03:24.477 に答える
0

私はあなたがこれをしたいと思います:

select      u.id, u.fname, u.lname, count(*)
from        user u
left outer join upload up on u.id = up.userid
group by    u.id, u.fname, u.lname
order by    count(*) desc
于 2012-12-27T05:03:25.360 に答える
0
select us.username, us.avatar, us.country ,
(select count(*) from upload u where u.id=us.id) as no_of_uploads 
from users us order by 4 desc limit 3;
于 2012-12-27T05:05:32.430 に答える