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

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