Avatar billede htx98i17 Professor
30. juli 2017 - 10:59 Der er 9 kommentarer og
1 løsning

Hjælp til matematikken i mysqli

Jeg har brug for matematisk hjælp i en SQL (mysqli)

Varelinjerne kan se således ud:


id: 1
ordreid: 1
salgspris: 80 (beløb angivet uden moms)
moms: 20 (angivet som beløb)
rabat: 0 (angivet som procent)
antal: 1

id: 2
ordreid: 1
salgspris: 200
moms: 50
rabat: 10
antal: 2

id: 3
ordreid: 1
salgspris: 590
moms: 0 (bemærk at der ved denne vare ikke opkræves moms)
rabat: 0 (bemærk at der også kan være rabat på denne vare)
antal: 1


Jeg vil gerne lave ét udtræk som summerer og returnerer 3 beløb ved ordreid 1:

- momspligtigt_varesalg (beløbet skal være ekskl. moms)
- moms (beløb)
- varesalg_uden_moms (beløb)


Kan nogen hjælpe med det?
Avatar billede arne_v Ekspert
30. juli 2017 - 15:22 #1
Skal beloebene gannges med antal eller er det allerede sket?

Er varesalg_uden_moms salget af de varer som ikke har moms?
Avatar billede arne_v Ekspert
30. juli 2017 - 15:24 #2
Hvis ganges og ja saa proev:

SELECT SUM(antal*salgspris),SUM(antal*moms),SUM(IF(moms=0,1,0)*antal*salgspris)
FROM dintabel
Avatar billede htx98i17 Professor
30. juli 2017 - 15:43 #3
ja, beløbene skal ganges med antal

ja, varesalg_uden_moms er salget af varer som ikke er momspligtige.
Avatar billede htx98i17 Professor
30. juli 2017 - 15:45 #4
Husk at der kan være rabat på varen.
Avatar billede arne_v Ekspert
30. juli 2017 - 16:04 #5
Maaske:

SELECT SUM(antal*salgspris*(1-rabat/100.0)),SUM(antal*moms*(1-rabat/100.0)),SUM(IF(moms=0,1,0)*antal*salgspris*(1-rabat/100.0))
FROM dintabel
Avatar billede htx98i17 Professor
30. juli 2017 - 16:09 #6
Vil den første værdi ikke indeholde beløb fra varer som både er momspligtige og som ikke er?
Avatar billede htx98i17 Professor
30. juli 2017 - 16:14 #7
Jeg har måske ikke forklaret mig tydeligt nok.

Feltet 'moms' er ikke en salgspris alene.

salgspris (80 kr) = en vare uden moms = salgspris: 80 kr
salgspris (80 kr) & moms (20 kr) = en momspligtig vare = salgspris: 100 kr
Avatar billede arne_v Ekspert
30. juli 2017 - 19:51 #8
SELECT SUM(IF(moms=0,0,1)*antal*salgspris*(1-rabat/100.0)),
              SUM(antal*moms*(1-rabat/100.0)),
              SUM(IF(moms=0,1,0)*antal*salgspris*(1-rabat/100.0))
FROM dintabel

?
Avatar billede htx98i17 Professor
30. juli 2017 - 20:09 #9
Den ser ud til at fungere. Jeg tester lige noget mere henover de kommende dage.

hvad gør: IF(moms=0,0,1) ?

*(1-rabat/1: her ville jeg tro at der blev trukket 1 fra rabatprocenten? (eller omvendt?)
Avatar billede arne_v Ekspert
30. juli 2017 - 20:21 #10
IF(moms=0,0,1) er 0 hvis moms er nul og ellers 1 - den goer at man kun taeller hvis moms ikke er nul

*(1-rabet/100.0) fratraekker rabat, hvis rabat er 20 saa *(1-20/100.0)=*0.8
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