Avatar billede marvinq Nybegynder
05. august 2008 - 11:57 Der er 6 kommentarer og
1 løsning

Hvordan tvinger jeg en NULL ?

Hej eksperter.

Jeg har en asp-side, som laver et MySQL-kald...

Jeg har lige nu 4 virksomheder, og vil vide hvor mange tilmeldinger der er kommet i de 4 virksomheder siden ex. 1. august... Har et kald som følger...

SELECT count(*) AS sum FROM user JOIN memberof ON user.id = memberof.user_id WHERE date >= '2008-08-01' GROUP BY memberof.company_id

Mit problem er bare at hvis tilmeldingerne i de 4 virksomheder er ex. 10,20,0 og 30.... Så kommer resultatet ud som: 10,20,30. Når der ingen tilmelding er, så skippes den... MEN - kan det ikke lade sig gøre, at tvinge den til at skrive nul?? Har prøvet noget med at plusse 0 til sum eller noget andet fusk, men det virker ikke...

Håber I kan hjælpe!!

På forhånd tak.
Avatar billede janpolsen Nybegynder
05. august 2008 - 12:08 #1
Prøv at kigge på COALESCE()...

Noget ala:
  SELECT COALESCE(count(*), 0) AS sum FROM...
Avatar billede marvinq Nybegynder
05. august 2008 - 12:31 #2
Har lige prøve med det du skrev, men det kan jeg ikke få til at give anderledes end den tidligere...

Andre bud :-/
Avatar billede arne_v Ekspert
05. august 2008 - 15:55 #3
Hvis du har en nyere MySQL maa du kunne lave en left join mellem tabellen og din query.
Avatar billede kjulius Novice
05. august 2008 - 21:57 #4
Jeg vil tro, at du har en tabel, som indeholder dine virksomheder, f.eks. company. I så fald kan du tage udgangspunkt i den og dermed altid få vist data for alle virksomheder. Noget a.la (ikke testet):

SELECT c.id, COALESCE(x.sum, 0) AS sum
FROM company c
LEFT JOIN (
    SELECT company_id, count(*) AS sum
    FROM user u
    INNER JOIN memberof m ON u.id=m.user_id
    WHERE date >= '2008-08-01'
    GROUP BY m.company_id
) AS x ON x.company_id = c.id
Avatar billede marvinq Nybegynder
07. august 2008 - 13:00 #5
Jeg har lige tjekket hurtigt, og din kode ser ud til at virke som den skal... men vender lige tilbage så snart jeg er helt sikker.
Avatar billede marvinq Nybegynder
28. december 2012 - 13:11 #6
kjulius, vil du smide svar, så vi kan lukke :)
Avatar billede marvinq Nybegynder
03. januar 2013 - 13:58 #7
Lukker pga. manglende respons
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