[Megoldva] Első 50 fordító (MySQL query)

Az a feladatom, hogy egy Pootle rendszerből gyűjtsem ki az 50 legszorgalmasabb fordítót. Egy MySQL lekérdezésre lenne szükségem, de sajnos elfelejtettem, amit valaha tudtam az SQL-ről, és a dolog sürgős.

Van egy fordítók tábla, az oszlopok: id, username, first_name, last_name, email stb.
Vagy egy statisztika jellegű tábla, az oszlopok között van egy submitter_id, ami a fordítók táblabeli id-vel azonos.
Odáig eljutottam, hogy mondjuk:
select count(*) from pootle_app_submission where submitter_id=14;
és akkor kijön, hogy 1671, azaz a 14-es id-jű ember 1671 fordítást csinált. Arra lenne szükségem, hogy egy olyan táblát kapjak eredményül, amiben az első 50 legnagyobb ilyen értékű ember van: "username, first_name, last_name, email, hányat csinált" formátumban, az utolsó oszlop szerint csökkenő sorrendben.

Hozzászólások


SELECT username, first_name, last_name, email, count(pootle_app_submissions.submitter_id) AS hanyat_csinalt FROM {forditok} INNER JOIN pootle_app_submission AS sub ON {forditok}.id=sub.submitter_id GROUP BY {forditok}.id ORDER BY hanyat_csinalt DESC LIMIT 50

Régen volt előttem MySQL, de elvileg ezt meg kéne ennie és azt kéne kapnod vele, amit szeretnél.

Szerk: A count(tábla.*) nem nyerő

BlackY

A tábla.* tényleg nem volt nyerő. A javítottra azt mondja:
ERROR 1054 (42S22): Unknown column 'pootle_app_submission.submitter_id' in 'field list'

De ha count(*)-ot írok csak, akkor is látszólag jól számol, nagyon úgy tűnik, hogy azt kaptam, amit szerettem volna, úgyhogy köszi! Meg tudod erősíteni, hogy nem elvi hibás?

SELECT username, first_name, last_name, email, count(*) AS hanyat_csinalt FROM auth_user INNER JOIN pootle_app_submission AS sub ON auth_user.id=sub.submitter_id GROUP BY auth_user.id ORDER BY hanyat_csinalt DESC LIMIT 50;

Ha úgy tűnik, akkor igen :)

Részletesen: az inner join művelettel kapsz egy m soros táblát (n fordító, m fordítás), a group by-al összehúzod n sorra/csoportra, és a count-al az egy csoportba eső elemeket számolod.

Az submitter_id-es megoldásnak is mennie kellene, csak oda is sub.submitter_id kéne (utólag adtam hozzá az alias-t, és ott nem javítottam)

BlackY

Egy próbát megér:

SELECT count(*) AS count,submitter_id FROM `pootle_app_submission` GROUP BY submitter_id ORDER BY count DESC LIMIT 0,50

valami ilyesmi:

select count(*) as c, submitter_id from pootle_app_submission group by submitter_id order by c desc limit 50;

Mindenkinek köszönöm a segítséget.