24. juni 2011 - 22:13Der er
8 kommentarer og 1 løsning
Database design og dataudtræk på gennemsnit
Hej til alle,
Jeg sidder her og får grå hår i hovedet over en opgave jeg har sat mig for. Det er efterhånden mange år siden jeg sidst har arbejdet med databaser, og jeg har brug for lidt (muligvis meget) hjælp til at komme videre.
Opgaven er flg.: Jeg har en række ordresedler samt fakturaer som jeg gerne ville indtaste i en database, med henblik på at kunne sammensætte 'nøjagtige' tilbud til mine kunder. Mine ordresedler består af en række serviceydelser som jeg skal lave for kunden. Mine fakturaer består så efterfølgende af et samlet beløb beregnet på det antal timer som jeg har brugt på at udføre det arbejde der var angivet på ordresedlen. Nu havde jeg så forestillet mig, at jeg kunne indtaste mine ordresedler - altså de specifikke delopgaver jeg har udført - samt det antal timer jeg har brugt ialt, for derefter at kunne lave en slags sammenligning/gennemsnit af hvor meget tid jeg har brugt på de specifikke serviceydelser/delopgaver. Hvordan kommer jeg i gang med dette? Er det bedst for mig at benytte Access eller findes der nemmere alternativer? Det skal siges at jeg har flere tusinde ordresedler, hvilket skulle give grundlag for en fornuftig database, idet hver ordreseddel indeholder mellem 10-30 specifikke delopgaver. Jeg venter med længsel på at høre jeres kommentarer.
Tabel1 indeholder hvilken opgave der er tale om (feltet opgave), samt det antal timer der er brugt på hver enkelt opgave (feltet timer). SQL vil se således ud:
SELECT Tabel1.opgave, Avg(Tabel1.timer) AS GennemsnitOftimer FROM Tabel1 GROUP BY Tabel1.opgave;
Hej mugs, Tak for dit hurtige svar. Jeg har øjensynligt ikke fået forklaret mig godt nok i den indledende tekst. Det drejer sig om biler. Jeg får en kunde i butikken, hvor vi sammen laver en ordreseddel. Den består af flere forskellige ting som kunden ønsker lavet. Jeg kan på forhånd kun give kunden en ca. pris, som desværre alt for mange gange ligger langt fra den pris/tid som vi bruger på at ordne bilen. Derfor tænker jeg at det må kunne lade sig gøre at tage alle mekanikkernes timesedler og lægge dem ind i en database. Men desværre har vi ikke skrevet ned hvor lang tid vi har brugt på hver enkelt delopgave, hvorfor jeg kun har den samlede ordreseddel og fakturaen med de samlede antal timer vi har brugt. Nu er det jo sådan at vi taler om forskellige biler, og forskellige typer services. Mange af ordresedlerne indeholder de samme services, men med forskellige tider, afhængig af bilmodel. Ligeledes er delopgaverne løst med forskellig hastighed afhængig af mekaniker mm. Jeg har derfor en forhåbning om, at hvis jeg fodrer en database med alle ordresedlerne (altså de services som er udført) samt det samlede antal timer der er forbrugt, så kan databasen pga. de mange informationer begynde at beregne på hvor lang tid hver enkelt service har taget, ved at sammenligne de forskellige ordresedler og timeantallet. Hermed skulle jeg gerne få mulighed for i fremtiden at indtaste en ordreseddel med kundens bil, samt de services der skal laves, hvorefter databasen spytter en 'nøjagtig' pris/timetal ud på opgaven. Lyder det nemt? Det syntes jeg bestemt ikke, hvilket er årsagen til jeg søger hjælp her hos Eksperterne
Det forstår jeg fint. Men grundlæggende er mit forslag korrekt, det drejer sig nu kun om at indtaste samtlige detaljer du vil beregne på. f.eks. udskiftning af en lydpotte, så er du jo nødt til at indtaste bilmærke / model samt antal forbrugte timer. Så vil du ved hjælp af min SQL få en liste over gennemsnittet af forbrugte timer på udskiftning af potten på alle bilmærker / modeller.
Det er kun et spørgsmål om deltajeringsgrad i din indtastning. Jeg har afprøvet min SQL i en lille testdb med havearbejde. F.eks. hækklipning, græsslåning, lugning m.v. Her kan vi blot indtaste havearbejde og SQL vil give dig et gennemsnit for havearbejde. Men hvis jeg indtaster mere detaljerede opgave, vil jeg få et gennemsnit på hækklipning, græslåning m.v. svarende til om du indtaster VW POLO, VW GOLF eller PASSAT.
Tak mugs, Denne her del af opgaven har jeg forstået. Det jeg er på jagt efter, er en løsning hvor jeg kan få SQL til at virke lidt intelligent. Som f.eks. når én service opgave har været olieskift, nye viskere, baglygtepære, håndbremsekabel - tid 2 timer. En anden har været nye tændrør, generator, dørlås, nye viskere - tid 3 timer. En tredje har været ny forrude, ny viskermotor, nye viskere - tid 6 timer. Når jeg så har indtaste f.eks. 40 opgaver med nye viskere, ville jeg gerne have SQL til at regne ud hvor lang tid jeg i snit har brugt kun på at skifte nye viskere. Kan det lade sig gøre, og hvordan. Jeg har som tidligere nævnt masser af ordresedler/fakturaer, men kan disse danne grundlag for en sådan selektiv udvælgelse, når 'systemet' selv skal til at sammenligne opgaver, for derefter at udregne en evt. middeltid for de delopgaver jeg senere vil indtaste.
Hej finb, Ja det kunne jo være en løsning til fremover, men der kommer jo til at gå en rum tid førend den ville kunne være præcis nok. Finder der virkelig ikke en metode hvor jeg kan gøre brug af den dokumentation jeg allerede har?
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.