[ alensp @ 19.12.2006. 22:22 ] @
Pozdrav,
prvi put se javljam na ovaj forum pa oprostite ako sam fulao temu i forum, Uglavnom, imam bazu rally natjecanja u kojem tablica "special_stage_result" sadrži vremena natjecatelja po ispitima (ss). Ja bi tebao zbrojiti vremena pojedinog natjecatelja do određenog ispita...
E sada, ovdje je SQL upi kojega sam napravio ali mi on ovakav daje vreme samo prvog ispita a ne zbraja. Ako maknem GROUP BY dio, onda uredno prikaže sve rezultate pojedinačno i to je OK. Sada samo treba zbrojiti vremena za pojednog natjecatelja. Ja sam probao sa "GROUP BY competitor.st_number" ali ne radi.
Querry:
{$ss=2;}
$result = mysql_query("SELECT *, SUM(time) FROM special_stage_result, competitor where special_stage_result.st_number=competitor.st_number AND special_stage_result.ss_id<=" . $ss . " GROUP BY competitor.st_number ORDER BY special_stage_result.status, special_stage_result.time,competitor.st_number ASC");

Molim VAS, pomognite. Ne znam šta je tu krivo!!!!!
[ Nebojsa_S @ 20.12.2006. 07:21 ] @
Da li si pokusao :
Code:
$result = mysql_query("SELECT competitor.st_number, SUM(time) FROM special_stage_result, competitor where special_stage_result.st_number=competitor.st_number AND special_stage_result.ss_id<=" . $ss . " GROUP BY competitor.st_number ORDER BY special_stage_result.status, special_stage_result.time,competitor.st_number ASC");
[ alensp @ 20.12.2006. 08:52 ] @
Jesam, ali meni treba ("SELECT *,") tj. da izvuče sve šta ima u tablici a po ovom upitu on samo izvlači "competitor.st_number". Znači, treba izvući sve iz tablice i sumirati vremena.
Npr. tablica u bazi izgleda ovako:

ss st_number Ime Vrijeme
2 1 Ime1 258000
2 2 Ime2 268000
2 3 Ime3 257000
2 4 Ime4 698000
2 5 Ime5 874000
3 1 Ime6 125000
3 2 Ime7 126000
3 3 Ime8 128000
3 4 Ime9 258000
3 5 Ime10 127800
NAPOMENA: Ima još podataka u tablici ali za ovo nisu bitni i vrijeme je u tisućinkama, i kao takvog ga treba zbrojiti. Konverzija u format m:s:t se radi kasnije

Sada bi trebalo da za st.number 1 uzme vrijeme sa ss=2 (258000) i ss=3 (125000) te to zbroji.

Unaprijed hvala na odgovoru.
[ Nebojsa_S @ 20.12.2006. 11:29 ] @
Funkcija sum() je tzv. agregatna funkcija ( kao min , max, count ...). To znaci, sumira se po grupama kolona koje si naveo u klauzuli GROUP BY. Osim toga , SVE kolone koje navedes u SELECT naredbi , osim sum(), MORAJU se naci i u GROUP BY. Znaci:
Code:

SELECT col1, col2,col3,  competitor.st_number, SUM(time) 
FROM special_stage_result, competitor 
WHERE .... 
GROUP BY col1, col2,col3, competitor.st_number 


Sta ce kod tebe biti col1, col2... zavisi od toga sta zelis da dobijes