Avatar billede lund_dk Praktikant
23. april 2007 - 10:34 Der er 11 kommentarer og
1 løsning

SUM opgave

Har en lille SUM opgave der skal løses..


Min database:
[KurvLinier]
id | Brugersession | Variantid |

[Varianter]
id | Pris | Tilbud | Tilbud pris

Jeg skal have fundet den samlet pris i min indkøbskurv, ud fra [kurvlinier]

Dvs, den skal gå ind og finde varinatid fra [kurvlinier], dykke ned i [Varinater] og finde prisen derfra.

MEN, skal tage højde for om varinaten er på tilbud.
Så hvis kolonne "Tilbud" har værden 1 så skal TIlbudsprisen bruges - hvis "tilbud" har værdien 0, skal "pris" bruges.

Nogen der kan hjælpe mig med det?
Avatar billede fennec Nybegynder
23. april 2007 - 10:37 #1
Hvilken database er det?
Avatar billede lund_dk Praktikant
23. april 2007 - 10:38 #2
kolonnerne med priser er angivet som valuta, øvrige som tal
Avatar billede lund_dk Praktikant
23. april 2007 - 10:38 #3
det er en access
Avatar billede lund_dk Praktikant
23. april 2007 - 10:40 #4
Ups, har glemt "Antal" i [KurvLinier] som der skal tages højde for..
Avatar billede fennec Nybegynder
23. april 2007 - 10:49 #5
Du skal have fat i IIF syntaxen. Burde blive til noget ala:
select sum(IIF(tilbud=1,Tilbudsprisen,pris)*Antal) from...

Jeg kan ikke lige finde et link til en beskrivelse af IIF, men der er flere hits på den, hvis du søger på IIF i Access kategorien.
Avatar billede fennec Nybegynder
23. april 2007 - 10:51 #6
Min forklaring på IIF:
IIF(betingelse, VedTrueGørDette, VedFalseGørDette)

Altså hvis tilbud=1 så returnere den værdien fra "Tilbudsprisen" ellers er det "pris"
Avatar billede lund_dk Praktikant
23. april 2007 - 10:52 #7
Jeg har tidligere i forbindelse med en anden shop, fået hjælp herinde.. der fik jeg denne ud af det, som virker..

Måske du kan hjælpe ud fra det?


//******************* SUM AF KURV
sql = "SELECT SUM(iif(shop_produkt.Tilbud,shop_produkt.tilbudspris,shop_produkt.salgsPRIS) * shop_kurv.Antal) AS KurvPris " & _
"FROM shop_kurv INNER JOIN shop_produkt ON shop_kurv.vareID = shop_produkt.ID " & _
"WHERE shop_kurv.SessionID = " & session.sessionID & ""
set rsSum = Conn.Execute(sql)
KurvSum = formatnumber(rsSum("KurvPris"))
Set RSSum=Nothing
Avatar billede fennec Nybegynder
23. april 2007 - 11:09 #8
Det er en ganske standard IIF, som den jeg skrev.

Hvis vi nu lavede koden først så den bare beregnede på pris ville den se sådan ud:
sql = "SELECT SUM(Varianter.pris * kurvlinier.Antal) AS KurvPris " & _
"FROM kurvlinier INNER JOIN Varianter ON KurvLinier.Variantid= Varianter.ID " & _
"WHERE kurvlinier.Brugersession = " & session.sessionID & ""

Det eneste vi så gør er at ændre Varianter.pris til en IIF sætning, så den tager den ene eller den anden kolonne, ud fra en betingelse:
sql = "SELECT SUM(iif(Varianter.tilbud,Varianter.tilbudspris,Varianter.pris) * kurvlinier.Antal) AS KurvPris " & _
"FROM kurvlinier INNER JOIN Varianter ON KurvLinier.Variantid= Varianter.ID " & _
"WHERE kurvlinier.Brugersession = " & session.sessionID & ""
Avatar billede fennec Nybegynder
23. april 2007 - 11:11 #9
I dette tilfælde gør vi så yderlige brug af at 0=false og alle andre tal=true. Derfor behøver vi ikke skrive:
iif(Varianter.tilbud=1,Varianter.tilbudspris,Varianter.pris)

Men kan nøjes med:
iif(Varianter.tilbud,Varianter.tilbudspris,Varianter.pris)
Avatar billede lund_dk Praktikant
23. april 2007 - 11:22 #10
OK

Jeg har så nu denne
sql = "SELECT SUM(iif(Varianter.tilbud,Varianter.tilbudpris,Varianter.pris) * kurvlinier.Antal) AS KurvPris " & _
"FROM kurvlinier INNER JOIN Varianter ON KurvLinier.Variantid = Varianter.ID " & _
"WHERE kurvlinier.Brugersession = " & session.sessionID & ""
set rsSum = Conn.Execute(sql)


og får fejlen..
Microsoft JET Database Engine fejl '80040e07'

Datatyperne stemmer ikke overens i kriterieudtrykket.

Har kigget det igennem, og kan umiddelbart ikke se hvad fejlen skulle være..
Avatar billede lund_dk Praktikant
23. april 2007 - 11:35 #11
Ah, den lå lige til højrebenet

kurvlinier.Brugersession = " & session.sessionID & ""
skulle være
kurvlinier.Brugersession = '" & session.sessionID & "'"


Men tak for en god indsats, og smid et svar :)
Avatar billede fennec Nybegynder
23. april 2007 - 11:41 #12
.o) <-- One Eyed Jack
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
Kurser inden for grundlæggende programmering

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