/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
SQL Sætning med brug af SUM funktionen i W~
Fra : Frank Sørensen


Dato : 02-06-03 23:53

Hvorfor er det ikke muligt at bruge funktionen i WHERE delen af min SQL?
Mere konkret, hvorfor virker denne sætning ikke?

strSql = "select navn, SUM(k) AS k, SUM(m) AS m, SUM(gk) AS gk, SUM(rk) AS
rk from tabel WHERE SUM(m) <> 0 GROUP BY navn order by sum(m) desc"

**** FEJL MEDDELSEN ***
En aggregatfunktion kan ikke bruges i WHERE-delsætningen (sum(m)<>0).

Sætningen bruges til at udskrive en topscorer liste for alle sæsoner.
Men jeg vil kun have vist dem som har scoret mål. Hvis jeg bare bruger "m" i
stedet for "SUM(m)" i WHERE delen går den igennem men regner forkert sammen
da den jo kun vælger de sæsoner hvor spilleren har scoret mål.

Hvordan løser jeg dette problem?

--
Mvh
Frank Sørensen

"Kun en tåbe rydder op. Et geni behersker kaos"



 
 
Jens Gyldenkærne Cla~ (03-06-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 03-06-03 00:03

Frank Sørensen skrev:

> strSql = "select navn, SUM(k) AS k, SUM(m) AS m, SUM(gk) AS
> gk, SUM(rk) AS rk from tabel WHERE SUM(m) <> 0 GROUP BY navn
> order by sum(m) desc"

Prøv med

select navn, SUM(k) AS k, SUM(m) AS m, SUM(gk) AS
gk, SUM(rk) AS rk
from tabel
GROUP BY navn
HAVING Sum(m) > 0
order by sum(m) desc"

> En aggregatfunktion kan ikke bruges i WHERE-delsætningen
> (sum(m)<>0).

Den slags skal lægges i HAVING-delen.

WHERE gælder for hver enkelt post. HAVING gælder for grupperede
poster (og er derfor kun aktuel sammen med GROUP BY).

Bemærk også rækkefølgen i syntaksen:

SELECT <felter>
FROM <tabeller> (inkl. JOIN-udtryk)
WHERE <postkriterier>
GROUP BY <grupperingsfelter>
HAVING <gruppekriterier>
ORDER BY <sorteringsfelter>

Poster der ikke opfylder WHERE-delen når aldrig til GROUP BY (og
HAVING).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Frank Sørensen (03-06-2003)
Kommentar
Fra : Frank Sørensen


Dato : 03-06-03 00:27

> Prøv med
>
> select navn, SUM(k) AS k, SUM(m) AS m, SUM(gk) AS
> gk, SUM(rk) AS rk
> from tabel
> GROUP BY navn
> HAVING Sum(m) > 0
> order by sum(m) desc"

Det virker perfekt.... Takker mange gange

> Den slags skal lægges i HAVING-delen.
> WHERE gælder for hver enkelt post. HAVING gælder for grupperede
> poster (og er derfor kun aktuel sammen med GROUP BY).

Jeg kendte faktisk slet ikke HAVING udtrykket, har ikke arbejdet så meget
med grupperede poster.
Dejligt at lære noget nyt

--
Mvh
Frank Sørensen

"Kun en tåbe rydder op. Et geni behersker kaos"



Søg
Reklame
Statistik
Spørgsmål : 177554
Tips : 31968
Nyheder : 719565
Indlæg : 6408852
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste