Avatar billede lsskaarup Nybegynder
18. september 2009 - 11:42 Der er 6 kommentarer og
1 løsning

Måneder uden data vises ikke

Jeg har en query, som laver en masse beregninger og grupperinger på indgående ordre over de forskellige måneder. Mit problem er at, hvis der ikke findes en ordre i en bestemt måned, som kommer den ikke med i outputtet.

Et eller andet sted, er det jo klart nok, men kan queryen eventuelt tilpasses, så den bare viser 0 ved de månederne der ikke har nogle ordrer?

SELECT month( r572a ) AS maaned, count( * ) AS antal, sum( r504 ) AS ordresum, sum( r477a ) AS staalpris, sum( r477 ) AS tonnage, avg( r509 ) AS krkg, sum( r503 ) AS fortjeneste, avg( r502 ) AS db, 'test' AS antalTilbud, 'test' AS tilbudssum, 'test' AS tilbudstonnage, 'test' AS budget, 'test' AS budgetafv FROM (SELECT ordre, MAX( rev ) AS rev FROM ordre GROUP BY ordre) AS o,ordre, ordre0, ordre4, ordre5 LEFT JOIN kunde ON kunde_hidden = kunde.id WHERE o.ordre = ordre.ordre && o.rev = ordre.rev && ordre.id = ordre0.tilbudsnummer && ordre0.tilbudsnummer = ordre4.tilbudsnummer && ordre4.tilbudsnummer = ordre5.tilbudsnummer && r572a >= '2008-07-01' && r572a < '2009-07-01' && ( ordre5.r534b !=1 || ordre5.r534b IS NULL ) && r534a != 1 && land = 'S' GROUP BY maaned ORDER BY maaned
Avatar billede arne_v Ekspert
18. september 2009 - 18:51 #1
Lav en tabel med alle maaneder i og join med den (LEFT JOIN ikke INNER JOIN naturligvis).
Avatar billede lsskaarup Nybegynder
19. september 2009 - 10:46 #2
Så jeg egentlig tage dette output og joine over i en tabel kun indeholdende månederne?

Det havde jeg ikke lige tænkt på, udemærket ide. Det skal jeg lige prøve om jeg kan få til at virke, i en og samme query,
Avatar billede lsskaarup Nybegynder
21. september 2009 - 10:16 #3
Hmm, nu jeg kommer til at kigge nærmere på det, så er det ikke den bedste løsning. Mit problem er at jeg ikke har en månedstabel.

Datoerne ligger som date felter på hver enkelt ordre, og når der ingen ordre er i en bestemt måned, kan jeg jo heller ikke trække månederne ud og herefter joine.

Jeg kunne selvfølgelig oprette en tabel kun med månederne i, men det synes jeg ikke lige frem er den mest elegante løsning.
Avatar billede arne_v Ekspert
27. september 2009 - 04:47 #4
Det fylder jo kun nogle få KB at lave måneder mange år ud i fremtiden.

Alternativet er at lade din applikation indsætte de manglende måneder som nul.
Avatar billede arne_v Ekspert
22. oktober 2009 - 23:26 #5
Tid at få afsluttet her ?
Avatar billede lsskaarup Nybegynder
23. oktober 2009 - 14:31 #6
Åh, ja, det havde jeg lige glemt. Smider du et svar, da løsningen jeg brugte, var at joine med en månedstabel
Avatar billede arne_v Ekspert
23. oktober 2009 - 15:16 #7
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