Avatar billede webweaver Praktikant
17. oktober 2006 - 15:59 Der er 10 kommentarer og
1 løsning

SELECT SUM virker umiddelbart ikke

Hey Profs.

Jeg sidder og bikser med noget profil Rating, hvor jeg skal bruge SELECT SUM funktionen for at addere mine felter. Men jeg kan desværre ikke få det til at virke. Hvis jeg smider en or die på, kommer den med en fejl;

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(Rating) as total_rating FROM Rating WHERE ProfilRating = '63''

Men jeg kan ikke lige se fejlen, så håber I kan have en anelse om hvorfor.

Scriptet;

if ($viewprofile == "") {                               
$query = mysql_query("SELECT *, SUM (Rating) AS total_rating FROM Rating WHERE ProfilRating = '$myprofile'") or die(mysql_error());
                           
} else {
                           
$query = mysql_query("SELECT *, SUM (Rating) AS total_rating FROM Rating WHERE ProfilRating = '$viewprofile'") or die(mysql_error());

}
                       
$antal_rates = mysql_num_rows($query);
echo $antal_rates;
                           
while ($data = mysql_fetch_array($query)) {
                       
$total_rating = $data['total_rating'];
                           
echo $total_rating;
   
}

På forhånd tak :)

Mvh. Lasse Jensen
Avatar billede jaw Nybegynder
17. oktober 2006 - 16:01 #1
Har aldrig selv brugt SUM, men kan det måske skyldes, at du har et mellemrum mellem SUM og (..) ?
Avatar billede webweaver Praktikant
17. oktober 2006 - 16:03 #2
Muligvis, kan lige tjekke en gang.
Avatar billede webweaver Praktikant
17. oktober 2006 - 16:05 #3
Det gjorde en forskel. Men ikke helt med det ønskede resultat.
Nu fik jeg en anden sjov lille besked;

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

Hmm?
Avatar billede jaw Nybegynder
17. oktober 2006 - 16:06 #4
Ja, det betyder så, at udtrækket er "ulovligt" uden en GROUP BY.
Avatar billede webweaver Praktikant
17. oktober 2006 - 16:09 #5
Hvis jeg skriver
$query = mysql_query("SELECT SUM (Rating) AS total_rating FROM Rating WHERE ProfilRating = '$viewprofile'") or die(mysql_error());

hvor stjernen er fjernet, så virker det.
Eller delvist. Den lægger tallene sammen, men den skriver hele tiden et 1 tal foran?
Avatar billede jaw Nybegynder
17. oktober 2006 - 16:11 #6
Måske du er ude efter:
SELECT *, SUM(Rating) AS total_rating FROM Rating WHERE ProfilRating = '$viewprofile' GROUP BY ProfilRating
?
Avatar billede webweaver Praktikant
17. oktober 2006 - 16:12 #7
Baah det var min bad, det er klart den skriver 1 foran. Det er tallet fra min anden variabel hvor jeg tæller. Sorry, tror jeg er lidt træt ;)

Det virker fint nu.

Smid et svar, og få dine point :)
Avatar billede webweaver Praktikant
17. oktober 2006 - 16:19 #8
Jeg kan altså ikke bruge GROUP. Så kan den ikke tælle som den skal min mysql_num_rows();
Avatar billede jaw Nybegynder
17. oktober 2006 - 16:26 #9
Nøh, men hvad så hvis du smider en count på?
SELECT *, COUNT(*) as NumRows, SUM(Rating) AS total_rating FROM Rating WHERE ProfilRating = '$viewprofile' GROUP BY ProfilRating

Og så tjekker på numrows? Men ellers hvis det virker som du vil, så er det jo godt nok uden GROUP :)
Avatar billede webweaver Praktikant
17. oktober 2006 - 16:39 #10
Det virker fint med COUNT(*), så den bruger jeg bare :)

Thanks.
Avatar billede jaw Nybegynder
17. oktober 2006 - 16:40 #11
Selv tak :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB