[ dddtux @ 09.03.2007. 14:55 ] @
| Iz MySQL uzimam podatke (npr. o svim ucenicima: ime, prezime, odeljenje, razred, ocena(1..n), prosecna ocena (koju nemam u bazi, vec se izracunava od podataka koji stizu iz baze).
Code: $ucenik=mysql_query("select * from ucenik");
while($upit=mysql_fetch_array($ucenik){
// izracunava prosecnu ocenu
$niz= array("$upit[ime]", "$upit[prezime]", "$upit[ocene]", "$upit[prosecna_ocena]");
//***
}
Treba da napravim niz u koji ce biti smesteni svi $niz, da bih mogao da ih razvrstam po prosecnoj oceni (da prvi u tabeli bude ucenik sa najvecim prosekom). Formiram tabelu, ali su ucenici rasporedjeni po redosledu ucitavanja iz baze.
Hvala unapred!
[Ovu poruku je menjao Nemanja Avramović dana 07.03.2008. u 09:55 GMT+1] |
[ Miroslav Ćurčić @ 10.03.2007. 01:00 ] @
mysql_query("select * from ucenik order by prosecna_ocena");
[ dddtux @ 10.03.2007. 09:45 ] @
Prosecnu ocenu nemam u bazi, vec se izracunava od ocena koje su u bazi.
Treba mi niz koji je sastavljen od nizova koji se prave u svakom krugu petlje.
Znaci, razvrstavanje nizova po promenljivoj koje NEMA u MySQL bazi.
[ Miroslav Ćurčić @ 10.03.2007. 10:59 ] @
Prvi način: u samom select upitu sračunaš vrednost proseka za svakog učenika pa to upotrebiš u "order by", ide nešto sa "group by" ali ne znam napamet, pogledaj mysql manual.
Drugi način: kad dodaješ učenika u glavni niz dodaj ga sa:
Code:
$tmp= round($prosek*1000);
while(isset($niz[$tmp])) $tmp= "$tmp#";
$niz["$tmp"]= array("$upit[ime]", "$upit[prezime]", "$upit[ocene]", $prosek);
i posle samo primeniš ksort();
[ Whois @ 10.03.2007. 11:15 ] @
bas mucite kod...
select *, (oc1+oc2+...ocn)/n as prosek from ucenici order by prosek
[ sale83 @ 12.03.2007. 10:02 ] @
AVG() :)
Recimo da je ovako:
ucenikID = Svaki ucenik ima svoj ID ....
Code:
SELECT ucenikID, AVG(ocene) FROM student GROUP BY ucenikID ORDER BY ocene
Ako za svaku ocenu imas posebnu kolonu onda ovako: ( Tj kao sto je WHOIS napisao)
Code:
SELECT ime, (ocena0+ocena1+ocena2...ocenaN)/N AS prosek FROM studenti ORDER BY prosek
PS
Ovo je valjda bilo pitanje za MYSQL :)
[Ovu poruku je menjao sale83 dana 12.03.2007. u 11:17 GMT+1]
[ dddtux @ 13.03.2007. 10:18 ] @
Hvala na pomoci.
Trebala mi je pomoc oko skripta koji razvrstava nizove koji su vec formirani
usort($niz, rang)
gde je
function rang($a, $b){
if($a[broj_elementa_u_nizu] == $b[broj_elementa_u_nizu])
return 0;
else if ($a[broj_elementa_u_nizu] < $b[broj_elementa_u_nizu])
return 1;
else
return -1;
}
gde je, opet, broj_elementa_u_nizu = 9, npr.
Ovo mi razvrstava nizove u opadajucem redosledu prema 9. elementu niza.
Problem, 2.deo:
Ako zaboravimo MySQL, i ako treba da posle razvrstavanja prema elementu 9, razvrstava i po elementu 8 (ako ima vise istih proseka, na vise mesto u listi se stavlja ucenik sa vecom ocenom iz nekog izbornog predmeta, na primer)?
[ zrnoo @ 06.03.2008. 23:31 ] @
imam i ja jedno pitanje...Ako imam u jednoj tabeli id, učenik ... a u drugoj id, brojocena , zbir .. kako sada da spojim te dve tabele i napravim ispis 5 ucenika sa najvecom ocenom poredjnom po opadajucem nizu. id je isti u obe tabele tj govori o kom se uciniku radi.. znaci zelim ovako...
tabela 1
-------
1. Marko
2. Ivan
3. Mirko
...itd
tabela 2
-------
1. 29 84
2. 23 50
2. 45 140
...itd
jel moze neko da mi pomogne .. kapiram ja da prvo ide konekcija na bazu vadim podatke o uceniku i delim ocenu sa brojem glasanja i dobijem prosecnu ocenu, ali ne znam kako to da uradim za vise njih i ogranicim ispis za 5...
molim ljude dobre volje za konkretnu pomoc (ne ono, ti zelis ceo kod)..verujem da nije nista strasno...
unapred se zahvaljujem!
[ Man-Wolf @ 06.03.2008. 23:42 ] @
@zrnoo - Probaj ovako:
Code:
SELECT t1.*, t2.* FROM tabela1 AS t1 INNER JOIN tabela2 AS t2 ON t1.ID = t2.ID ORDER BY t2.zbir DESC LIMIT 0,5
Pitanje za MySQL Forum ....
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.