Tingelingen Skrevet 25. februar 2009 Del Skrevet 25. februar 2009 Jeg har en skoleoppgave hvor vi lager en oppskriftsdatabase. En av oppgavene er at vi skal ha en makspris som innparameter og summere alle råvarene i oppskriften og vise de oppskriftene som kommer innenfor maksprisen. Prisen på råvarene ligger i en innkjøpstabell hvor man ligger inn pris og antall. Hver oppskrift er også opprettet for ulike antall porsjoner. Jeg har derfor først opprettet en temporær tabell som regner ut prisen på en enhet av hver råvare i oppskriften. Jeg får problemer med å summere alle råvarene i denne tabellen slik at man får total prisen til oppskriften.. Hvis jeg oppretter en ny temporær tabell så får jeg bare problemer. Bør jeg bruke cursor for å løse dette. Ser at det blir frarådet i de fleste tilfeller og det blir foreslått at man skal bruke temporær tabell. Eller er det noen som har noen andre forslag? Lenke til kommentar
kaffenils Skrevet 25. februar 2009 Del Skrevet 25. februar 2009 Summering gjøres ved å bruke aggregatfunksjons SUM(). F.eks. select sum(pris*antall) from ingredienser where oppskrift_id=1 Lenke til kommentar
siDDis Skrevet 25. februar 2009 Del Skrevet 25. februar 2009 Trenger ikke cursors for å løse denne oppgåven, heller ikkje tempoære tabeller. Eg ville ha lagd ein ekstra kolonne i tabellen med oppskriftene der du summerer summen på oppskrifta også kjører du ein enkel spørring Lenke til kommentar
blackbrrd Skrevet 26. februar 2009 Del Skrevet 26. februar 2009 (endret) Denne oppgaven krever også bruk av HAVING clausen... Her har du litt pseudokode, går utfra tre tabeller: oppskrift, ingrediens, pris. SELECT oppskrift, SUM(ingrediens*pris) FROM oppskrift INNER JOIN ingrediens ON ... INNER JOIN pris ON ... GROUP BY oppskrift HAVING SUM(ingrediens*pris) < X siDDIs sin løsning med å lagre summen på oppskriften er kun nødvendig hvis du har veldig mange oppskrifter og høye krav til hastighet, ellers skaper den bare mer arbeid. Endret 26. februar 2009 av blackbrrd Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå