Sique wrote:
>
> Hej
>
> Når jeg laver flg statement i mysql:
>
> SELECT sum(Place) FROM result WHERE competetee = 'something' ORDER BY
> Max(Place) limit 0,3
>
> Havde jeg satset på at få summen af de tre første kolloner tilbage....Men
> det sker ikke.
>
> Istedet returneres summen for alle kolonner.
>
> Nogen der ved hvad der er galt?
Evalueringsrækkefølge.
Først from: join tabellerne sammen.
Dernæst where: Begræns antallet af resultatrækker
Så Select: Bestem dig for, hvilke rækker, der skal ud.
Så group by / aggregate-functions (som fx sum)
(Vi springer having over)
Til slut sorteres resultatet
og i dette tilfælde tilføjes en ikke-standard krølle: kun de 3 første
rækker vælges.
Men på det tidspunkt er sum-beregningen for længst gennenført.
Hvad du gerne vil have er
select sum(place)
from (select Place
FROM result
WHERE competetee = 'something'
ORDER BY Place
limit 0,3)
Dette kan så vidt jeg har forstået ikke lade sig gøre i MySQL
(subselects), så jeg er bange for at du bliver nødt til at gemme
resultatet af sub-selecten i et mellemresultat i stedet.
Hvad forventede du i øvrigt at opnå med ORDER BY MAX(Place) i stedet for
bare ORDER BY Place?
--
Kristian Damm Jensen | Feed the hungry at
www.thehungersite.com
kristian-damm.jensen@cgey.dk | Two wrongs doesn't make a right,
ICQ# 146728724 | but three lefts do.