23. august 2008 - 17:59Der 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 ;-)
SELECT leverandor.levnavn,SUM(ordrelinie,antal) FROM leverandor,varer,ordrelinie WHERE leverandor.leveranid = varer.leverandorid AND varer.vareid - ordrelinie.vareid GROUP BY leverandor.levnavn
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
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
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
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'
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
OK, det var et punktum der lige skulle laves til komma ;-)
FROM leverandor,varer.ordrelinie FROM leverandor,varer,ordrelinie
Synes godt om
Ny brugerNybegynder
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.