[ CONFIQ @ 04.02.2003. 22:40 ] @
Pokušavam da napravim glasanje na jednom sajtu i problem je što sam stao u izračuvanju SUM-a glasova i broju glasova

upit ide ovako

SELECT sum(ocena),COUNT(ocena) FROM `skrpte_kmntri` WHERE id='$page'...

znači SUM bi trebalo da izračuna SUMu svih ocena a COUNT bi trebao da izračuna kolko ljudi je glasalo ali dobijem ovu grešku

Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

Mogu ovo drugačije da uradim ali hoću maximalno da koristim mysql pa ako neko zna....
[ -zombie- @ 04.02.2003. 22:53 ] @
Code:

SELECT sum(ocena) as suma, COUNT(ocena) as ocena, suma/ocena as rezultat
FROM skrpte_kmntri s 
GROUP BY s.id
WHERE s.id='$page'
[ CONFIQ @ 04.02.2003. 23:19 ] @
Hmmm,baš sam krenuo da odgovorim samom sebi,možda zvuči smešno ali ne znam ni ja sam šta je bio problem :)

Hvala Zombi,imam pitanje za tebe... ako može negde mala dokumentacija ili u linijama da mi objasniš šta je ovo:

FROM skrpte_kmntri s 
GROUP BY s.id
WHERE s.id='$page'?
[ -zombie- @ 04.02.2003. 23:26 ] @
pa nista narocito. stvar navike. u prvom redu, FROM skripte s samo dajesh "alias" iliti drugo ime (obicno krace) tabeli. ovo je narocito korisno kada join-ujesh dve tabele:

Code:

SELECT o.*, i.*
FROM orders o, items i
WHERE o.id=i.order_id


u drugoj liniji (from..) sam samo rekao sql-u da u ovom upitu, svuda gde stavim o. mislim na tabelu oreders (i na field-polje iz te tebele), a kada stavim i. da mislim na tabelu items (i njena polja).

pogledaj mysql man za SELECT komandu..
[ Riste Pejov @ 05.02.2003. 09:27 ] @
Code:

SELECT sum(ocena) as suma, COUNT(ocena) as ocena, suma/ocena as rezultat
FROM skrpte_kmntri s 
GROUP BY s.id
WHERE s.id='$page'


Group By je klauza koja SQL upitu indicira prema koje non-aggregate kolone da grupira rezultate. A kao sto ja vidim u gorenavedenom upit nema non-aggregate kolone, tako da group by klauza nema nikakve poente.

Drugo, u mysql-u bar u 3.23, ne mozes kolone referencirati kao sto je autor pokusao sa rezultatom.

Da bi ovaj upit radio, trebao bi izgledati nesto slicno ovome
Code:

SELECT id,sum(ocena) as suma, COUNT(ocena) as ocena, (sum(ocena)/COUNT(ocena)) as rezult
FROM skrpte_kmntri
WHERE id=43 GROUP BY id


I malo mi nije jasan dizajn baze. Ukoliko je id kolona pravi ID, t.j. PK, kako je moguce da se isti ponavlja ? ako je id unique, onda group by nema nikakvog efekta.
[ CONFIQ @ 05.02.2003. 20:27 ] @
Najisrenije nikad nisam Join-ovao 2 tabele tako da nije ni čudno što nisam znao...
Što se tiče „dizajna mysql”-a,to sam napamet napisao taj deo koda zato je WHERE ID=...

Hvala svima :Đ