Avatar billede foxwell Nybegynder
23. januar 2003 - 21:15 Der er 1 kommentar og
1 løsning

COUNT() i SQL

Hej Xperter,

lad os sige at jeg har en database med tabellen "beskeder", hvor jeg har en kolonne der hedder "kategori". "kategori" er et nummer der henviser til en kategoritype (defineret i en anden tabel). Lad os sige at der er 3 kategorityper, X, Y og Z. Jeg laver nu en query hvor jeg henter alle beskeder. Jeg programmerer I ColdFusion, og når jeg spytter min QUERY ud får jeg den sorteret efter kategoritype, så resultatet kunne se sådan ud:

KATEGORI X
----------
besked 1
besked 2
besked 3

KATEGORI Y
----------
besked 4
besked 5
besked 6

KATEGORI Z
----------
besked 7
besked 8
besked 9

Jeg vil nu gerne tælle hvor mange beskeder der er i hver kategori, hvilket jeg ville gøre med COUNT(), men jeg kan ikke finde ud af hvordan...

Det resultat jeg gerne ville frem til kunne se sådan ud:

KATEGORI X (3 beskeder)
----------
besked 1
besked 2
besked 3

KATEGORI Y (3 beskeder)
----------
besked 4
besked 5
besked 6

KATEGORI Z (3 beskeder)
----------
besked 7
besked 8
besked 9

Jeg kan godt få det til at fungere når jeg kun skal tælle en enkelt kategori:

SELECT count(kategoritype)
FROM beskeder
WHERE kategori = X

men ikke med flere kategorier.

Jeg legede lidt med følgende løsning:

SELECT
count(SELECT kategoritype FROM beskeder WHERE kategoritype = X) AS count_x,
count(SELECT kategoritype FROM beskeder WHERE kategoritype = Y) AS count_y,
count(SELECT kategoritype FROM beskeder WHERE kategoritype = Z) AS count_z

men det lader ikke til at fungere...

nogen forslag? =)

//foxwell
Avatar billede cbp Nybegynder
23. januar 2003 - 21:47 #1
Det lyder som en opgave for group by:
select kategoritype, count(kategoritype)
from beskeder
group by kategoritype
Avatar billede foxwell Nybegynder
24. januar 2003 - 00:59 #2
godt forslag, har kigget på det og troede at det ville virke, men ikke i dette tilfælde. har løst opgaven, men ikke med group by... Jeg lagde en ny query inden i mit CF OUTPUT GROUP tag, og loopede på den måde over queryen:

<CFQUERY NAME="typecount" DATASOURCE="#db#">
SELECT count(type) as typecount
FROM prods
WHERE type = #type#
AND kat = #kat#
</CFQUERY>

slet ikke så kompliceret, men jeg kunne bare ikke lige se det før.

ellers tak for hjælpen =)
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