Avatar billede lifeweb Nybegynder
24. august 2008 - 12:40 Der er 14 kommentarer og
1 løsning

konvertere null til 0

hej

jeg har lavet flg. sql-sætning:
select firmid,alias,(SELECT sum(point) FROM competition_points WHERE competition = 1 AND firmid = competition_firms.firmid) as point from competition_firms where competition = 1

den virker efter hensigten - bortset fra at nogle af felterne bliver "null" istedet for "0" da der ikke er noget i competition_points

er der nogen der kan rette sætningen til, så den returnerer 0 istedet for null

tak ;)
Avatar billede w13 Novice
24. august 2008 - 12:51 #1
Ikke bedre bare at sætte competition_points til standard at være 0? Så bliver alle sådan nogle udregninger jo lettere at arbejde med.
Avatar billede lifeweb Nybegynder
24. august 2008 - 13:02 #2
jo hvordan gør jeg det?

jeg er ikke så stærk i sql ;)
Avatar billede w13 Novice
24. august 2008 - 13:07 #3
Det gør du i din database, der hvor du redigerer dine tabeller.
Avatar billede lifeweb Nybegynder
24. august 2008 - 13:18 #4
jamen det er jo en sammentælling ;)
jeg summer jo op fra tabellen competition_points ud fra nogle kriterier... hvis der ikke er noget i tabellen som matcher mine kriterier, får jeg null istedet for 0 som sum...
Avatar billede erikjacobsen Ekspert
24. august 2008 - 13:28 #5
Er det ikke nemmest bare i udskriften fra SQL-en, i programmeringssproget bagved, at skrive "0" hvis den er "null" - eller måske mere informativt: "ingen oplysninger".
Avatar billede lifeweb Nybegynder
24. august 2008 - 13:30 #6
hej erik

det ville ikke være dumt i langt de fleste tilfælde - men lige her, skal jeg gerne have det direkte fra sql-sætningen...

er der nogen af jer der ved hvad der "tæller" mest... et 0 eller null?
jeg tænker ift sortering efter lige præcis den kolonne...
Avatar billede HenrikSjang Nybegynder
24. august 2008 - 16:20 #7
du kan bruge isnull:

select sum(isnull(point,0)) from dinTabel

læs mere her: http://msdn.microsoft.com/en-us/library/ms184325.aspx)
Avatar billede HenrikSjang Nybegynder
24. august 2008 - 16:25 #8
en anden måde at skrive din sql på kunne være dette:

select
    competition_firms.firmid,
    alias,
    sum(isnull(point,0)) as point
from competition_firms
left outer join competition_points
on competition_firms.firmid = competition_points.firmid
where competition = 1
group by competition_firms.firmid, alias
Avatar billede w13 Novice
24. august 2008 - 16:33 #9
Mener, at 0 tæller mere end null, når vi snakker sortering.
Avatar billede ux Nybegynder
24. august 2008 - 22:49 #10
kan du ikke bare overstyre felterne med isnull(felt, 0)

Jeg kunne ikke helt forstå din beskrivelse... men måske kan du gøre noget a' la'

select  firmid,
        alias,
        ( SELECT    sum(point)
          FROM      competition_points
          WHERE    ISNULL(competition,0) = 1
                    AND firmid = competition_firms.firmid
        ) as point
from    competition_firms
where  ISNULL(competition, 0) = 1
Avatar billede hrc Mester
25. august 2008 - 09:53 #11
Hvad med coalesce? http://msdn.microsoft.com/en-us/library/aa258244(SQL.80).aspx

select firmid,alias,
  coalesce(SELECT sum(point)
    FROM competition_points
    WHERE (competition = 1)
      AND (firmid = competition_firms.firmid),0) as point
  from competition_firms
  where (competition = 1)
Avatar billede lifeweb Nybegynder
31. august 2008 - 16:51 #12
hey

well.. jeg kan desværre ikke få jeres 2 sætninger til at give 0 istedet for null

jeg prøver mig frem
tak for forsøget..

poster løsningen herinde hvis jeg finder en
Avatar billede hrc Mester
31. august 2008 - 20:14 #13
coalesce er i alt fald kommandoen der returnerer den første værdi forskellig fra NULL (nu er NULL slet ikke en værdi, det er en slags ingenting ..).
Den må du kunne bruge et eller andet sted.
Avatar billede lifeweb Nybegynder
27. november 2008 - 10:33 #14
nu har jeg fundet ud af det...
jeg brugte isnull til at overstyre - skulle bare lige finde ud af hvordan og hvorledes...

sjang: smid et svar hvis du vil have point

mange tak ;)
Avatar billede w13 Novice
27. november 2008 - 10:41 #15
lifeweb>> Du har selv taget points, så du skal oprette et nyt spørgsmål med 30 points, hvis sjang skal have dem. =)
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