बाएं बाहरी ठीक से काम नहीं कर रहे हैं - mysql, चयन करें, बाएं-शामिल हों

मैं शीर्ष तीन उपयोगकर्ताओं को वापस करने की कोशिश कर रहा हूंसबसे अधिक अपलोड इसके बाद मुझे 3 शीर्ष उपयोगकर्ताओं में से प्रत्येक के लिए अपलोड की संख्या गिनने की गिनती है। अभी यह केवल एक उपयोगकर्ता को वापस कर देता है और गिनती सभी अपलोड की गणना करती है, भले ही कोई अपलोड उस उपयोगकर्ता से संबंधित न हो।

यहां मेरा टेबल सेटअप है:

अपलोड करें: (आईडी, उपयोगकर्ता आईडी, नाम, स्थान, प्रकार)

उपयोगकर्ता: (आईडी, fname, lname, उपयोगकर्ता नाम, अवतार, देश, पीडब्ल्यू)

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

मदद के लिए अग्रिम धन्यवाद!!

उत्तर:

उत्तर № 1 के लिए 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;

जवाब के लिए 0 № 2

आप में कमी 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

लेकिन ध्यान में रखते हुए कि यह प्रश्न संबंधों का ख्याल नहीं रखेगा।


जवाब के लिए 0 № 3

मुझे लगता है कि आप यह करना चाहते हैं:

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 № 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;

संबंधित सवाल
सबसे लोकप्रिय