Avatar billede loukas Mester
23. august 2008 - 17:59 Der er 15 kommentarer og
1 løsning

Count og Sum fra flere tabeller

Hej, har jeg brugt min lørdag eftermiddag på den her..
Håber nogen kan / vil hjælpe.

Jeg skal finde ud af 'antal varer' hver enkelt leverandør har haft med i en ordre.
Tabellerne er bygget op således.
1. leverandor | leverandor.leveranID, leverandor.levnavn, etc..
2. varer | varer.vareid, varer.leverandorID, varer.SalgsPris,  etc...
3. ordrelinie | ordrelinie.vareid, ordrelinie.antal, .farve etc....

varer og leverandor hænger sammen med
(leverandor.leveranID - varer.leverandorID)

varer og ordrelinie hænger sammen med
(varer.vareid - ordrelinie.vareid)

Bemærk ordre.antal som er det antal varen er solgt i på ordren.

Og hvis der der er nogen som kan, så skal jeg også bruge samlet varer.SalgsPris på hver enkelt leverandor.
Men det er ikke strengt nødvendigt ;-)
Avatar billede arne_v Ekspert
23. august 2008 - 18:14 #1
prøv:

SELECT leverandor.levnavn,SUM(ordrelinie,antal)
FROM leverandor,varer,ordrelinie
WHERE leverandor.leveranid = varer.leverandorid AND varer.vareid - ordrelinie.vareid
GROUP BY leverandor.levnavn
Avatar billede arne_v Ekspert
23. august 2008 - 18:14 #2
og:

SELECT leverandor.levnavn,SUM(ordrelinie,antal*varer.salgspris)
FROM leverandor,varer,ordrelinie
WHERE leverandor.leveranid = varer.leverandorid AND varer.vareid - ordrelinie.vareid
GROUP BY leverandor.levnavn
Avatar billede arne_v Ekspert
23. august 2008 - 18:15 #3
ups

ordrelinie,antal

skal være

ordrelinie.antal
Avatar billede loukas Mester
23. august 2008 - 18:28 #4
Tak, det var hurtig svar.
Den første giver nogle nogle ekstremt høje tal, højerer en antal ordrelinier.

SELECT leverandor.leverandorNavn, SUM(ordrelinie.antal)
FROM leverandor,varer,ordrelinie
WHERE leverandor.leveranid = varer.leverandorid AND varer.vareid - ordrelinie.vareid
GROUP BY leverandor.leverandorNavn
Avatar billede arne_v Ekspert
23. august 2008 - 18:33 #5
Den summerer antal varer i ordrelinien - vil du kun tælle ordrelinier, så:

SELECT leverandor.levnavn,COUNT(*)
FROM leverandor,varer,ordrelinie
WHERE leverandor.leveranid = varer.leverandorid AND varer.vareid - ordrelinie.vareid
GROUP BY leverandor.levnavn
Avatar billede loukas Mester
23. august 2008 - 18:43 #6
OK, men det er stadig meget høje tal.
leverandor.leveranid.
Hvis en leverandor bliver slettet og der senere bliver oprettet en ny,
kan den nye så få et id som en slettet leverandør har haft?
Hvis det er tilfældet, bliver det ikke nemt at skilde ad.
den står til 'auto_increment'
Avatar billede loukas Mester
23. august 2008 - 18:46 #7
Hovsa.
'varer.vareid - ordrelinie.vareid',
skal det ikke være 'varer.vareid = ordrelinie.vareid'
Avatar billede arne_v Ekspert
23. august 2008 - 18:50 #8
Jo.

Og det kan nok forklare en masse rækker !

(jeg copy pastede)
Avatar billede loukas Mester
23. august 2008 - 18:51 #9
Det ligner noget som kunne være rigtigt ;-)

Tusind tak for hjælpen.
Giv et svar,
så kommer der points
Avatar billede arne_v Ekspert
23. august 2008 - 18:51 #10
Auto increment genbruger ikke (medmindre du resetter værdien).
Avatar billede loukas Mester
23. august 2008 - 19:23 #11
Super,
Jeg får en fejl:
SELECT command denied to user: 'user@localhost' for table 'ordrelinie'




SELECT leverandor.leverandorNavn, SUM(ordrelinie.antal*varer.salgspris) "
FROM leverandor,varer.ordrelinie WHERE leverandor.leveranid = varer.leverandorid AND varer.vareid = ordrelinie.vareid
GROUP BY leverandor.leverandorNavn
Avatar billede arne_v Ekspert
23. august 2008 - 19:30 #12
Brugernavnet user har ikke adgang til tabel ordrelinie !?!?
Avatar billede arne_v Ekspert
23. august 2008 - 19:30 #13
Check adgang.
Avatar billede arne_v Ekspert
23. august 2008 - 19:30 #14
Og et svar
Avatar billede loukas Mester
23. august 2008 - 19:46 #15
Hmm, jeg prøver at skrive til dem som hoster den.
Avatar billede loukas Mester
25. august 2008 - 15:37 #16
OK, det var et punktum der lige skulle laves til komma ;-)

FROM leverandor,varer.ordrelinie
FROM leverandor,varer,ordrelinie
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