Tingelingen Skrevet 7. januar 2009 Del Skrevet 7. januar 2009 (endret) Hei! Jeg holder på å lage en oppskriftsdatabase og en lagret prosedyre skal regne om ingredienssmengdene etter antall porsjoner. Resultatet lagres i en temporær tabell. Utskriften skal være som følger: X porsjoner av retten y blir som følger: og deretter de nye mengdene av hver ingrediens. Problemet mitt er at hvis jeg kjører det i en spørring så vil teksten "x porsjoner av retten y" stå fremfor hver indgrediens. Kan ikke finne noen eksempler på dette i lærebøkene heller. Er det noen som har noen gode ideer til hvordan det kan løses? Endret 8. januar 2009 av Tingelingen Lenke til kommentar
blackbrrd Skrevet 7. januar 2009 Del Skrevet 7. januar 2009 Hvorfor vil du lagre resultatet i en temporær tabell? Hvorfor returnerer du ikke bare resultatet til applikasjonen din? Lenke til kommentar
kaffenils Skrevet 8. januar 2009 Del Skrevet 8. januar 2009 Jeg skjønner ikke helt. Kan du vise hvordan spørringen din er nå. Lenke til kommentar
Tingelingen Skrevet 8. januar 2009 Forfatter Del Skrevet 8. januar 2009 (endret) Jeg mente jeg burde lage en temporær tabell i og med at jeg måtte regne porsjonene i to omganger, men det er mulig at det er enklere å løse på en annen måte. Iallefall så berenger den porsjonene helt riktig, det er bare måten det fremstilles på som jeg klusser med. Som sagt så skal outputen være slik f.eks: 4 porsjoner av retten y blir som følger: 400 g kjøttdeig 1 løk osv Prosedyren er slik nå: create procedure regne_om_porsjoner @Antallporsjoner int, @oppskriftsid int as begin create table #holdoutput (oppskriftsid int, antall float, enhet varchar (50), råvare varchar (50)) INSERT #holdoutput SELECT O.id, I.antall/O.porsjoner, E.navn, RÅ.navn FROM Ingrediens I JOIN Oppskrift O ON I.oppskrifts_id = O.id JOIN Råvare RÅ ON I.råvare_id = RÅ.id JOIN Enhet E ON E.id = I.enhet_id where O.id = @oppskriftsid declare @oppskriftsnavn varchar (50) set @oppskriftsnavn = (SELECT navn FROM oppskrift where id = @oppskriftsid) UPDATE #holdoutput SET antall = antall * @antallporsjoner SELECT CAST (@antallporsjoner as varchar) + ' ' - ' porsjoner av retten' + Rtrim (@oppskriftsnavn)+ 'blir' + CAST(antall as varchar) + ' ' + RTRIM(enhet) + ' ' + råvare FROM #holdoutput END Endret 8. januar 2009 av Tingelingen Lenke til kommentar
kaffenils Skrevet 8. januar 2009 Del Skrevet 8. januar 2009 Jeg synes du blander presentasjon og datauthenting. Det du prøver er å la databaseserveren generere den nøyaktige teksten som skal presenteres. Det er helt unødvendig. Databaseserveren skal ikke å formattere teksten. La databaseserveren returnere grunndataene, og så kan klienten (webserveren, win-app eller hva det nå er) formattere og presentere disse dataene. Lenke til kommentar
Tingelingen Skrevet 10. januar 2009 Forfatter Del Skrevet 10. januar 2009 Jo jeg er enig i det. Grunnen til at jeg vil ha det presentert slik er at det er en oppgave i et T-SQL kurs hvor vi ikke programmerer mot en applikasjon og hvor deler av oppgaven er at man skal presentere det slik. Men vanligvis ville nok en applikasjon ta seg av det. 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å