Avatar billede pb1 Nybegynder
01. september 2011 - 20:03 Der er 3 kommentarer og
1 løsning

if i select query

Hej,

Er det muligt at lave et if statment i en select query? at gange med 7.5 hvis od_valua er EUR og 0.8 hvis SEK? inden det bliver lagt til SUM??

Kan det gøre i SQL ? eller skal jeg gør det med php?


tbl_order:
od_no * od_date * user_id * od_total * od_valuta

1024 * 01/09/2011 * 1 * 6000 * DKK
1025 * 31/08/2011 * 1 * 1000 * EUR
1026 * 31/08/2011 * 1 * 7000 * SEK


Det virker, men så tager den ikke højde for kurs forskelen :(

SELECT user_name, SUM(od_total) as total
FROM tbl_user, tbl_order
WHERE (tbl_order.user_id=tbl_user.user_id) AND (od_date LIKE '$d%')
GROUP BY user_name
ORDER BY total DESC
LIMIT 10
Avatar billede wanze Nybegynder
01. september 2011 - 20:22 #1
SELECT SUM(CASE
        WHEN od_currency = 'DKK' then od_total
        WHEN od_currency = 'SEK' then od_total*0.8
        WHEN od_currency = 'EUR' then od_total*7.5
    END) AS total
FROM currency

Man kan også bruge et if-statement, men det er besværligt, når der er 3 forskellige valutaer, og det bliver endnu mere besværligt, hvis du vil senere vil bruge flere valutaer. Desuden har jeg skrevet od_currency fremfor od_valuta, da det ikke giver mening, at valuta står på dansk, når resten i din tabel er engelsk.
Avatar billede Slettet bruger
01. september 2011 - 21:08 #2
Alternativt kunne du have en anden tabel med od_currency og den værdi der omregner til danske kroner (f.eks. med en kolonne vi kalder od_exchange_rate i en tabel med navnet exchange_rate). Så du kunne joine de to tabeller:

SELECT a.username, SUM(a.od_total * b.od_exchange_rate)
FROM currency a
INNER JOIN exchange_rate b ON b.od_currency = a.od_currency -- (eller od_valuta hvis du beholder det navn)
WHERE ...
GROUP BY a.username
ORDER BY a.total DESC
Avatar billede pb1 Nybegynder
01. september 2011 - 21:31 #3
wanze laver du et svar? det virker perfekt ! og skal bare kopier CASE delen ind i min eksisterende query :) meget nemt
Avatar billede wanze Nybegynder
01. september 2011 - 22:50 #4
Det får du her. :)
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