Avatar billede gadebarnet Nybegynder
08. marts 2004 - 12:53 Der er 11 kommentarer og
1 løsning

where på count

Kan man ikke lave en where på en count????

noget i stil med

select count(*) as antal where antal = 3
Avatar billede venne Nybegynder
08. marts 2004 - 12:56 #1
Så har du nok brug for HAVING:

select count(*)
from x
having count(*) = 3
Avatar billede bearhugx Nybegynder
08. marts 2004 - 12:56 #2
Nu er jeg ikke så meget inden i MS SQL...

Men burde du ikke have en FROM på et eller andet sted ...

altså
SELECT count(*) AS antalForkomster
FROM <tabel>
WHERE antal=3
Avatar billede gadebarnet Nybegynder
08. marts 2004 - 12:59 #3
Hvis der både er where, order by og group by i min sætning, hvor skal having så hen af???
Avatar billede bearhugx Nybegynder
08. marts 2004 - 13:00 #4
venne >> hvordan fa'en skulle det lige virke...

intetsteds i din SQL kode angiver du at feltet "antal" skal betragtes....
Avatar billede venne Nybegynder
08. marts 2004 - 13:00 #5
Altid i denne rækkefølge:

select...
from...
where...
group by...
having...
order by...
Avatar billede venne Nybegynder
08. marts 2004 - 13:02 #6
bearhugx>> Der var ikke noget felt der hed antal, det var et alias for count(*). Og det duer ikke i having-delen.
Avatar billede bearhugx Nybegynder
08. marts 2004 - 13:02 #7
gadebarnet >> har du prøvet mit forslag... Umiddelbart ville jeg mene at det vil virke...
Avatar billede gadebarnet Nybegynder
08. marts 2004 - 13:03 #8
bearhugx >> har jeg prøvet.

venne >> virker.
Avatar billede bearhugx Nybegynder
08. marts 2004 - 13:04 #9
venne >> jeg er enig i at der var brugt et "as antal" (hvilket ikke er særligt smart, når man også har et felt, som hedder antal - hvilket jeg går ud fra, da det bliver brugt "where antal=3" også)
Avatar billede venne Nybegynder
08. marts 2004 - 13:06 #10
bearhugx>> Jeg forstod spørgsmålet sådan, at "where antal=3" var beregnet til at referere til count(*).
Avatar billede bearhugx Nybegynder
08. marts 2004 - 13:10 #11
Ok... men så har jeg misforstået spørgsmålet...

Jeg troede at pointen var at finde antalet af de forekomster, hvor feltet "antal" havde værdien "3" ....


Må jeg spørge, om du så kan forklare, hvad man kan bruge dit svar til... For jeg kan ikke lige gennemskue det

select count(*)
from x
having count(*) = 3


Hvad er det, man tager ud af X --.- hvad er det for et resultat man ender op med ?
Avatar billede venne Nybegynder
08. marts 2004 - 13:17 #12
Som det står er det af begrænset værdi, det indrømmer jeg. Det laver optælling af rækker og hvis antallet er 3 kommer der en række ud med værdien 3, ellers kommer der intet ud. Det kan kun bruges til at checke om der er 3 rækker i tabellen og det behøver man jo ikke en having til.

Det er mere interessant at lave fx:

select a, count(*)
from x
group by a
having count(*) = 3

Her grupperes ud fra værdien af a, og de grupper hvor antallet er 3 returneres.

Eller:

select a, count(*)
from x
group by a
having count(*) > 1

Henter de værdier af a, der forekommer mere end én gang (dubletter).

Håber det kan hjælpe.
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