Avatar billede hansen Nybegynder
20. juni 2006 - 12:27 Der er 18 kommentarer og
1 løsning

Sum fra to tabeller i Access

Håber der er en der kan hjælpe mig her.

Jeg har to tabeller med antal og priser i.
Når der ligges noget i kurven opdateres tabellen "KURV" med relevant info. På betalingssiden ville jeg så gerne kunne summere op på prisen, men hvordan gør jeg det ?

Tabel 1: kurv
- Unikid (123456)
- antal (3 stk.)
- VareID (VareID)

Tabel 2: Varekort
- VareID (Autonr)
- Pris (100Kr)

Hvordan får jeg den til at summere op så jeg får totalen på alle handler foretaget af UnikID = "123456"

Lad os side der er købt tre bamser til 100,- stk
og 4 bamser til 50,- stk. af bruger "123456"

Hvordan ser select sætningen ud?
Avatar billede nielle Nybegynder
20. juni 2006 - 13:29 #1
SELECT Sum(kurv.antal*varekort.pris) AS total FROM kurv, varekort WHERE kurv.vareId=varekort.vareId WHERE unikId=123456
Avatar billede nielle Nybegynder
20. juni 2006 - 13:31 #2
Mindre rettelse - det er slet ikke sikkert at den er påkrevet:

SELECT Sum(kurv.antal*varekort.pris) AS total FROM kurv, varekort WHERE kurv.vareId=varekort.vareId WHERE kurv.unikId=123456
Avatar billede hansen Nybegynder
20. juni 2006 - 13:37 #3
tak, jeg glemte dog lige at spørge til hvordan jeg skriver summer ud med en response.write?
Avatar billede hansen Nybegynder
20. juni 2006 - 13:46 #4
den giver dene fejl, kan du se hvad der er galt?

Microsoft JET Database Engine error '80040e14'
Syntax error (missing operator) in query expression 'kurv.vareId=varekort.vareId WHERE kurv.unikId=sdsdsdsd'.
Avatar billede lund_dk Praktikant
20. juni 2006 - 14:33 #5
prøv med
SELECT Sum(kurv.antal*varekort.pris) AS total FROM kurv, varekort WHERE kurv.vareId=varekort.vareId WHERE unikId='" & unikid & "'
Avatar billede lund_dk Praktikant
20. juni 2006 - 14:34 #6
glemt mit bud, fik lige set forkert på koden
Avatar billede nielle Nybegynder
20. juni 2006 - 14:35 #7
Fejl i mon kode. Ret til:

SELECT Sum(kurv.antal*varekort.pris) AS total FROM kurv, varekort WHERE kurv.vareId=varekort.vareId AND kurv.unikId=123456
Avatar billede nielle Nybegynder
20. juni 2006 - 14:38 #8
Du udskriver faktisk på samme måde som for alle andre SQL-sætninger. Pointen med det linje "... AS total ..." som indgår i SELECT'en, er at totalen skal findes under navnet "total" (AS-leddet definere m.a.o. et alias):

sql = "SELECT Sum(kurv.antal*varekort.pris) AS total FROM kurv, varekort WHERE kurv.vareId=varekort.vareId AND kurv.unikId=123456"
Set rs = Conn.Execute(sql)
Response.Write rs("total")
Avatar billede hansen Nybegynder
21. juni 2006 - 14:16 #9
Hej igen

Jeg forsøger at sætte denne SQL ting ind, men den giver en fejl?

strsql = "SELECT Sum(kurv.antal*varekort.pris) AS total FROM kurv, varekort WHERE kurv.vareId=varekort.vareId AND kurv.unikId ='"&uid&"';"

--
SELECT Sum(kurv.antal*varekort.pris) AS total FROM kurv, varekort WHERE kurv.vareId=varekort.vareId AND kurv.unikId ='sdsdsdsd';
Microsoft JET Database Engine error '80040e10'

No value given for one or more required parameters.
Kan i se hvad der er galt?
Avatar billede nielle Nybegynder
21. juni 2006 - 15:54 #10
Der skal ikke stå ; tilsidst i din SQL-sætning. Jeg ved dog ikke om det er det som forårsager fejlen, men afprøv lige.

Er din SELECT nr. 2, i det ovenstående, en udskrift af hvad den tilhørende ASP-kode resultere i?

Din databasefejl, hvilken kodelinje stammer den helt præcist fra?
Avatar billede nielle Nybegynder
21. juni 2006 - 15:59 #11
Bortset fra det, så lyder fejlmeskeden som om at mindst et af felterne kurv.antal eller varekort.pris er tomme for en af rækkerne der trækkes ud.

Kan det tænkes at der måske ikke står noget i antal når det er underforstået at der kun skal købes 1 eksemplar af den givne vare?
Avatar billede hansen Nybegynder
23. juni 2006 - 15:19 #12
Hej igen

Jeg har lagt noget testdata ind i en DB, og her er alle felter fyldt med data, så det burde være på plads.

Det hjalp heller ikke med at fjerne ; i "enden" ;-)

Jeg har prøvet at bygge en rigitg SQL sætning i Access, men uden held. Jeg har så efterfølgende lavet en forespørgsel i Access hvor jeg så igen laver en sum på (pris * antal) som har ens unikID. Det fungerer men jeg ville gerne have det hele lavet uden en forespørgsel i Access, gerne fra en hel SQL streng.

Den er lidt for kryptisk til mig!
Avatar billede nielle Nybegynder
23. juni 2006 - 15:26 #13
Hvad sker der hvis du afprøver SQL-sætningen i Access?

SELECT Sum(kurv.antal*varekort.pris) AS total FROM kurv, varekort WHERE kurv.vareId=varekort.vareId AND kurv.unikId ='sdsdsdsd'
Avatar billede hansen Nybegynder
23. juni 2006 - 15:56 #14
Så spørger den først efter varekort.vareID og så kurv.unikID, fodret med det giver den en sum
Avatar billede nielle Nybegynder
23. juni 2006 - 18:18 #15
Den skulle da gerne ikke spørge om noget, hvis du ellers allerede har data i dine to tabeller som hænger sammen (har det samme vareId i begge, og svare til unikID='sdsdsdsd'.
Avatar billede hansen Nybegynder
28. juni 2006 - 08:21 #16
Hej igen, der er data i men den spørger alligevel.
Jeg har lagt Access DB op på nettet så du kan se om det er her der er gjort noget forkert, hvis du har tid og lyst.

http://www.karolinematilde.dk/eksp_shop.mdb

Der er lavet en forespørgsel der hedder eksperten.
Avatar billede nielle Nybegynder
28. juni 2006 - 08:31 #17
Du har brugt andre navne i din database end dem som du postede i spørgsmålet!

Din SQL-sætning skal rettes til at passe med de navne du bruger:

SELECT Sum(kurv.antal*varekort.pris) AS total
FROM kurv, varekort
WHERE kurv.vareId=varekort.id AND kurv.uId ='sdsdsdsd';
Avatar billede hansen Nybegynder
28. juni 2006 - 12:50 #18
Sorry, det beklager jeg.
Det virker også bedre nu :-)

Tak for tålmodigheden og hjælpen.
Giver du et svar, tak.
Avatar billede nielle Nybegynder
28. juni 2006 - 12:51 #19
Svar :^)
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