Avatar billede funkyloonie Nybegynder
02. december 2003 - 20:56 Der er 13 kommentarer og
1 løsning

Sortering af sql

Jeg har denne forespørgsel som jeg gerne vil have sorteret efter den værdi der fås vha. "SUM(Minuts) as min" således at flest minutter står øverst i resultsettet. Hvordan gør jeg det?

SELECT SUM(Minuts) as min, COUNT(MId) AS sets FROM `Match`, `Set` WHERE `Match`.MatchId = `Set`.MId AND Minuts!=0 GROUP by MId HAVING Sets=3
Avatar billede cautoo Nybegynder
02. december 2003 - 21:09 #1
sort by SUM(Minuts) as min desc/asc ville være mit gæt
Avatar billede arne_v Ekspert
02. december 2003 - 21:10 #2
order by
Avatar billede cautoo Nybegynder
02. december 2003 - 21:21 #3
hehe :)
Avatar billede funkyloonie Nybegynder
02. december 2003 - 21:56 #4
sort by er vist ikke valid. order by vil ikke accepteres med SUM(Minuts). ved godt hvordan man "normalt" bruger order by men ved ikke lige hvad der skal til i den aktuelle SQL...
Avatar billede arne_v Ekspert
02. december 2003 - 21:59 #5
Og du har selvfølgelig prøvet
  ORDER BY min
?
Avatar billede funkyloonie Nybegynder
02. december 2003 - 21:59 #6
SQL'en foroven giver det rigtige resultat, og derfra skal den bare være sorteret ;-) pænt irriterende
Avatar billede funkyloonie Nybegynder
02. december 2003 - 22:01 #7
Ja:

Fejl

SQL-forespørgsel : 

SELECT SUM( Minuts ) AS min, COUNT( MId ) AS sets
FROM `Match` , `Set`
WHERE `Match`.MatchId = `Set`.MId AND Minuts !=0
ORDER BY min
GROUP BY MId
HAVING sets =3
LIMIT 0 , 30

MySQL returnerede:


#1064 - 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 'GROUP  BY MId
HAVING sets =3 LIMIT 0, 30' at line 5
Avatar billede funkyloonie Nybegynder
02. december 2003 - 22:03 #8
problemet ligger et eller andet sted imellem kombinationen af order/group eller sum/count...

SQL'en helt foroven giver det rigtige resultat, og derfra skal den bare være sorteret ;-) pænt irriterende
Avatar billede funkyloonie Nybegynder
02. december 2003 - 22:16 #9
SELECT SUM( Minuts ) AS min, COUNT( MId ) AS sets
FROM `Match` , `Set`
WHERE `Match`.MatchId = `Set`.MId AND Minuts !=0
GROUP BY MId
HAVING sets =3
ORDER BY min DESC
Avatar billede funkyloonie Nybegynder
02. december 2003 - 22:17 #10
order by er selvfølgelig til sidst.
Avatar billede funkyloonie Nybegynder
02. december 2003 - 22:18 #11
points?
Avatar billede arne_v Ekspert
02. december 2003 - 22:20 #12
mig ?
Avatar billede funkyloonie Nybegynder
02. december 2003 - 22:21 #13
yes. du har hjulpet og jeg tager ikke points selv uden at byde.
Avatar billede arne_v Ekspert
02. december 2003 - 22:22 #14
OK
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
Computerworld tilbyder specialiserede kurser i database-management

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