Avatar billede lsskaarup Nybegynder
20. maj 2005 - 08:37 Der er 2 kommentarer og
1 løsning

Problemer med forespørgelse

Jeg har en træls problem, for at sige det på godt jysk.

Jeg har nogle statistikker som ikke stemmer overens. Nå, men det er jo nok fordi queryen ikke passer, tænker I nok. Problemet er bare at statistikkerne kan specificeres for en enkelt land, og for alle minus et virker det godt nok.

Situationen er som følger. Jeg har en ordreindgang, som viser oplysninger om ordrene f.eks. efter land. Her viser den korrekt for alle lande (DK, S, N, CH, Ø, D).

En anden statistik, årsopgørelse, viser så alle ordre samt summere deres værdier, for igen f.eks. hvert land fordelt pr. måned. Det mærkelige er så at her bliver alle lande vist korrekt, bort set fra CH (Schweiz)...?
Avatar billede lsskaarup Nybegynder
20. maj 2005 - 08:41 #1
Queryen er bygget op på den måde at i where-delen, er der en variabel, som henter landeværdien valgt af brugeren, den kan selvfølgelig også være alle lande. Det vil altså sige, at queryen er bygget ens op for alle forespørgelser med det er kun CH som fejler.

Databasestrukturen er lidt speciel, men skal I bruge den så skriv hvilke tabeller I gerne vil se.

Queryen se ud som denne.
I koden:
$sql = "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 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 >= '2004-07-01' && r572a < '2005-07-01' && (ordre5.r534b !=1 || ordre5.r534b IS NULL) && r534a != 1 && (r526n IS NULL || r526n = '0') $where GROUP BY maaned ORDER BY maaned";

Og når den er blevet eksekveret, f.eks. med Schweiz som land:
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 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 >= '2004-07-01' && r572a < '2005-07-01' && ( ordre5.r534b !=1 || ordre5.r534b IS NULL ) && r534a != 1 && (r526n IS NULL || r526n = '0') && land = 'CH' GROUP BY maaned ORDER BY maaned
Avatar billede lsskaarup Nybegynder
20. maj 2005 - 08:56 #2
Okay, det ser nu ud til at queryen godt nok returnerer noget, så må det være I min php-koden fejlen ligger.
Avatar billede lsskaarup Nybegynder
20. maj 2005 - 09:05 #3
Er flyttet over i php kategorien
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