jtsorensen Skrevet 20. april 2004 Del Skrevet 20. april 2004 SELECT a.ArrID, SUM(b.AntBill) AS sumBestillt FROM Arrangement a, Bestilling b WHERE b.ArrID = a.ArrID GROUP BY a.Tid; Her prøver jeg å krysse to tabeller og setter krav på at det skal summeres på antall bestillinger der ArrID er lik på begge tabellene. Men når jeg ikke har noen bestillinger så vil jeg at den skal returnere en sum på 0, noe som den ikke gjør og jeg får ut ingenting. Hvordan kan jeg få dette til? Lenke til kommentar
???????? Skrevet 20. april 2004 Del Skrevet 20. april 2004 Du burde kanskje bygge opp spørringen med LEFT JOIN eller bruke JOIN og ON slik at den ser bedre ut. Du bruker f.eks. bruke CASE for å returnere 0 dersom den ikke har noen verdi. Lenke til kommentar
jtsorensen Skrevet 20. april 2004 Forfatter Del Skrevet 20. april 2004 Kan du gi et eksempel på hvordan jeg kan forandre spørringen? Lenke til kommentar
???????? Skrevet 20. april 2004 Del Skrevet 20. april 2004 (endret) SELECT felt1, CASE felt2 WHEN '' THEN '0' ELSE felt2 END FROM tabell. Eller du kan bruke if: SELECT felt1, if(felt2 = '', '0', felt2) FROM tabell men da er det lurt å legge til AS og gi den et navn. Fordelen med CASE er at den bytter ut verdien som vises slik at du bruker resultatet akuratt som vanlig, den bytter bare ut '' med '0'. Du slipper f.eks. å gi den et navn. Endret 20. april 2004 av ???????? Lenke til kommentar
jtsorensen Skrevet 20. april 2004 Forfatter Del Skrevet 20. april 2004 SELECT a.ArrID, IF(SUM(b.AntBill)='','0',SUM(b.AntBill)) AS sumBestillt FROM Arrangement a, Bestilling b WHERE b.ArrID = a.ArrID GROUP BY a.Tid; Slik har den blitt, men den skriver bare ut de som jeg har bestilling på. Ser du noen som helst løsning? Lenke til kommentar
???????? Skrevet 20. april 2004 Del Skrevet 20. april 2004 Når du sier "skriver bare ut de som jeg har bestilling på" er det ikke lett å forstå når vi ikke vet hvordan tabellene dine ser ut Kommer det fortsatt ikke 0 der den ikke har noen verdi? eller er problemet at de feltene ikke blir med i det hele tatt? I så fall burde du kikke litt på, som jeg nevnte tidligere, metoden du joiner med. Bruk f.eks. LEFT JOIN hvis det er mulig, Lenke til kommentar
jtsorensen Skrevet 20. april 2004 Forfatter Del Skrevet 20. april 2004 Tusen hjertlig for hjelpen... endlig kan jeg slutte av med dritten etter 4 timers stress Lenke til kommentar
jtsorensen Skrevet 20. april 2004 Forfatter Del Skrevet 20. april 2004 Litt flaut men side du hadde så peiling så tar jeg meg den frihet å spørre igjen IF(SUM(b.AntBill)='NULL','0',SUM(b.AntBill)) AS sumBestillt IF(SUM(b.AntBill)='','0',SUM(b.AntBill)) AS sumBestillt Ingen av disse typene vil gi sumBestillt verdien 0, den får bare verdien NULL. Har du noe forslag? Lenke til kommentar
jtsorensen Skrevet 20. april 2004 Forfatter Del Skrevet 20. april 2004 (endret) Problemet er at jeg har prøvd begge deler... ingen av dem fungerte. IF(SUM(b.AntBill)='','0',SUM(b.AntBill)) AS sumBestillt Det var denne som ikke ville fungere slik som jeg trodde. Endret 20. april 2004 av jtsorensen Lenke til kommentar
???????? Skrevet 20. april 2004 Del Skrevet 20. april 2004 (endret) Du har rett, NULL er et eget lite tema innen SQL - ta en kikk i manualen så finner du litt info om det. Du kan f.eks. bruke funksjonen ISNULL() EDIT: glem ikke at du kan bruke PHP til dette også. Endret 21. april 2004 av ???????? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå