Left Outer Join funktioniert nicht richtig - mysql, select, left-join

Ich versuche, die Top drei Benutzer mit zurückzugebendie meisten Uploads Ich zähle dann die Anzahl der Uploads für jeden der 3 Top-User. Momentan gibt es nur einen Benutzer zurück und die Zählung zählt alle Uploads, auch wenn ein Upload nicht zu diesem Benutzer gehört.

Hier ist meine Tabelle Setup:

Upload: (ID, Benutzer-ID, Name, Ort, Typ)

Benutzer: (id, fname, lname, benutzername, avatar, land, 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

Vielen Dank im Voraus für die Hilfe !!

Antworten:

1 für die Antwort № 1

Ich denke, diese Abfrage löst Ihr Problem:

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;

0 für die Antwort № 2

dir fehlt GROUP BY Klausel in Ihrer Abfrage,

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

aber bedenken Sie, dass diese Abfrage nicht für die Verbindungen sorgen wird.


0 für die Antwort № 3

Ich denke du willst das machen:

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

0 für die Antwort № 4
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;