PDA

Pogčedajte punu verziju : Kako sabrati zapise iz MySQL


martovac
10. 02. 2008., 02:42
Ako moze neka pomoc!
Znaci u jednoj tabeli TEKSTOVI imam zapise tekstova svih korisnika.
Kako da saberem zapise svakog korisnika pojedinacno(to nije problem) i da ispisem 5 korisnika sa najvecim brojem zapisa:
Mika 10 zapisa
Toma 8 zapisa
....
....
Ivan 1 zapis
-------
Jedan od nacina, koji meni pada na pamet, je da zbirove zapisa pojedinih korisnika smesti u jednu promenjljivu kao:
$promt.=$zbir_korisnik."/" ... i npr njih 100
i onda taj string prevedem u array cije vrednosti poredjam pomocu:
array_multisort ($array, SORT_NUMERIC, SORT_DESC ); i ispisem
E sad buni me ukoliko je broj korisnika mnogo veci, da li ce ovaj nacin ispisivanja biti problematican.
Da li postoji neki jednostavniji nacin?

ivanhoe
10. 02. 2008., 03:43
pogledaj sql help za SUM i ORDER BY

dootzky
10. 02. 2008., 11:48
SELECT SUM(zapis)
FROM tekstovi
ORDER BY SUM(zapis)
LIMIT 5


ne moz' lakse od ovoga, a veci broj korisnika nece biti problematican jer limitiras query na 5 rezultata.. :)

Dejan Topalovic
10. 02. 2008., 13:58
SELECT korisnik, SUM(zapis)
FROM tekstovi
GROUP BY korisnik
ORDER BY SUM(zapis) DESC
LIMIT 5;

martovac
10. 02. 2008., 16:03
Ljudi nece nesto!
Ja upisem ovaj kod:
$sql="SELECT user, SUM(zapis) FROM tekstovi GROUP BY user ORDER BY SUM(zapis) DESC
LIMIT 5";
a prikazuje mi Invalid use of group function

martovac
10. 02. 2008., 17:48
Nasao sam resenje, trebalo je staviti navodnike ' '

ORDER BY 'SUM(zapis)'

kodi
10. 02. 2008., 21:30
elegantnije je ovako


#query...

SUM(zapis) as neki_alias

#query...

ORDER BY neki_alias DESC

#query...

ivanhoe
10. 02. 2008., 23:32
a veci broj korisnika nece biti problematican jer limitiras query na 5 rezultata.. :)

cim imas ORDER BY procesirace se svi rezultati, a LIMIT ce samo ograniciti broj vracenih rezultata