Avatar billede havmaage Juniormester
07. maj 2009 - 12:17 Der er 2 kommentarer og
1 løsning

SQL: group by kan det lade sig gøre

Mit spørgsmål går på at at tælle antal af bestemte forekomster i en tabel,

dette gør jeg med
select emne,count(*)
from emner
group by emne
men mit problem er at jeg hvis jeg søger ud fra foranstillede kritierer får jeg ikke de emner med som der er 0 antal i.
eks. på mit problem

#NOTE  emne 34 eksistere ikke i tabellen

emneVar = '23,34,56,102';

select emne,count(*)
from emner
where emne in &emneVar
group by emne

Dette giver talte resultater for alle emner untaget 34. Men det jeg gerne ville var at også emne 34 var reræsenteret i resultatet med antal 0.


Er der nogen der ved om det kan lade sig gøre i ren SQL, eller må jeg ty til at kode (SAS datastep)
Avatar billede arne_v Ekspert
08. maj 2009 - 01:21 #1
Prøv:

SELECT t1.emne,IFNULL(t2.n,0)
FROM emner t1 LEFT JOIN (SELECT emne,COUNT(*) AS n FROM emner WHERE ... GROUP BY emne) t2 ON t1.emne=t2.emne
WHERE ...

Funktionen IFNULL hedder noget forskelligt i forskellige databaser.
Avatar billede havmaage Juniormester
26. maj 2009 - 11:25 #2
tak for det, det virkede :-) læg venligst et svar så jeg kan lukke
Avatar billede arne_v Ekspert
26. maj 2009 - 15:45 #3
svar
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