Det ville nok være endnu smartere hvis du deler den i to tabeller..
tabel 1 ID (unik) + diverse stamdata
tabel 2 trafoid (ikke unikt) fejlkode bemærkning
Og så bruger du en til mange, så den enkelte transformater kun er oprettet i tabel 1, og så for hver fejl der er på den opretter du en post i tabel2, med fejlkode og bemærkning og så transformatorens unikke id. På den måde kan det også sagtens udvides til mere end 46 fejlkoder hvis der en dag skulle være brug for det.
rolfknudsen, min forstaaelse af spoergsmaalet er at du soeger en kode der kan transformere dine data fra den nuvaerende tabel den fremtidige tabelstruktur. Der er jeg enig med johan.o at du ikke skal proeve at goere det i mysql (eller mere precist, jeg kender ingen maade at goere det i mysql). Jeg vil foreslaa php, og nedenstaaende skal jeg foreslaa en kode der kan tage vare paa omsaetningen.
Yderligere er jeg enig med Comasys om at en tabel med colonner for hver af de 46 fejlkoder naeppe er hensigtsmaessigt. En hovedtabel med ID (unikt), stamoplysninger, og bemaerkning og saa en fejltabel hvor der for hver id for hver fejlkode kommer en raekke. Af database-tekniske aarsager boer hver raekke i fejltabellen have en unik key.)
For eksempel: Hovedtabel ID, navn, adresse, bemaerkning 1 hans bygade1 bemaerkning1 2 jens nygade2 bemaerkning2
Du kan saa finde alle fejl paa et ID 2 med saadan en forespoergsel: SELECT ID, fejl FROM hovedtabel h JOIN fejltabel f ON h.ID = f.ID WHERE h.ID = 2
I denne kode henter jeg foerst alle raekkerne i den gamle tabel sorteret paa ID. Hver gang en raekke i resultatet er for en ny ID indsaettes der en raekke i hovedtabellen, og derudover indsaettes der en raekke i fejltabellen for hver raekkke i resultatet, det vil sige for hver raekke i hovedtabellen.
1. Det ser ud til at bemaerkninger er per ID, ikke per fejl. Hvis der kan vaere bemaerkninger for hver fejl skal feltet bemaerkninger naturligvis flyttes til fejltabellen og koden i loekken tilpasses.
2. Og for nemheds skyld tog jeg kun to stamoplysninger med, men hovedtabellen skal naturligvis udvides med alle de andre stamoplysninger
Synes godt om
Slettet bruger
21. februar 2011 - 14:59#5
Hej alle sammen,
Tak for jeres svar.
Jeg har i midlertidig ikke fundet det ønskede svar.
Jeg ønsker ikke at opdele det i to tabeller og jeg ønsker hjælp til noget "kode" som kan rydde op i den tabel jeg har.
Jeg bruger normalt phpmyadmin til at lave dataudtræk.
Det betyder ikke så meget, at det ikke er den mest optimale måde at gøre tingene på da jeg kun har behov for, at lave denne transformering 1 gang om året.
Data'en skal efterfølgende eksporteres til Excel så der kan laves noget statistik herpå.
Jeg beklager hvis jeg ikke har tydelig gjort mit spørgsmål.
Ja, dit behov var ikke saa nemt at regne ud. Du sagde at tabellen var rodet. Derfor gik jeg (og andre aabenbart ogsaa) ud fra at du oenskede restrukturere til et mindre 'rodet' database design. Det synes saa ikke at vaere tilfaeldet. Du vil fortsaette med den bestaaende tabel, men af og til (en gang om aaret) har du brug for at exportere dataerne til Excell og soeger som mellemtrin en maade at opstille dataerne i en enkelt raekke for hver id nummer, og du oensker at denne restrukturering foregaar uden brug af andre 'redskaber' end mysql og phpMyAdmin.
Jeg ventede for at se om andre skulle foreslaa loesninger til det, men det skete ikke. Jeg synes heller ikke at det ligger saa lige for, og du er ikke selv saa meddelsom med din nuvaerende datastruktur (du blev spurgt om flere oplysninger i $6.)
Du forklarer at den nuvaerende tabel har kolonnerne ID, Fejlkode, Bemaerkning, navn, adresse, og en del flere kolonner til stamdata. Men der kan vaere op til 46 raekker med det samme ID men med forskellige fejlkoder. Er det korrekt at der for hver ID kun er et saet stamoplysninger? Er der ogsaa kun en bemaerkning for hvert ID, eller er der (eller kan der vaere) en bemaerkning for hver fejlkode? Hvilke vaerdier viser du i kolonnen Fejlkode? Et tal mellem 1 og 46? Gentager du stamoplysningerne for et ID i hver raekke, eller staar de kun i foerste raekke med den foerste fejlkode saaledes at disse kolonner kolonner er tomme i raekker med efterfoelgende fejlkoder? Jeg laver her et mini-eksempel med kun en stamdata, navn, foruden id, fejlkode, og bemaerkning. Er dette representativt for din tabel?
ID Fejlkode Bemaerkning Navn 1 17 abc Hans 1 23 abc Hans 2 15 def Jens 1 36 abc Hans 2 23 def Jens
Eller ser det snarere saaledes ud: 1 17 abc Hans 1 23 2 15 def Jens 1 16 2 23
rolfknudsen, du reagerede ikke paa indlaeggene #6 og #7. Er spoergsmaalet i mellemtiden ikke laengere aktuelt (hvad enten du selv fandt en loesning, har har omformuleret problemet, eller ..?) I saa fald venligst luk spoergsmaalet igen. Jeg kan se at du er ny paa Eksperten, saa lad mig forklare (maaske til overflod): Man lukker et spoergsmaal ved at accepter et svar. Et svar er et indlaeg markeret med gult og med en lille firkant ved teksten "Accepter dette svar". Til dette spoergsmaal har du kun faaet kommentarer (ikke markeret med gult.) Hvis man faar et hjaelpsomt svar i form af kommentar beder man den der har lavet indlaegget om at oprette et svar, og naar svaret kommer accepterer man det ved at saette et 'flueben' i den lille firkant og derefter klikke paa feltet "Accepter svar og afgiv points." Hvis man ikke faar hjaelpsomme indlaeg opretter man selv et svar (hvor man blot kan sige "Jeg lukker" eller, bedre, forklare hvordan man har loest det) og accepterer det.
Hvis du derimod oensker at fortsaette med spoergsmaalet saa reager paa indlaeggene saa vi kan komme videre.
roldknudsen, jeg prøver lige en gang til. Du oprettede spørgsmålet, men de modtagne indlæg svarede ikke til dit behov, og du gav ikke yderligere forklaring på behovet, hvad enten fordi problemet i mellemtiden ikke længere var aktuelt eller du selv fandt en løsning (i så fald til lykke.) Men du fik ikke lukket spørgsmålet. Det står derfor stadig som åbent ikke alene i din liste af indlæg, men også hos mig og hos de øvrige medlemmer der kom med indlæg. Så ironisk nok er vores forsøg på at hjælpe resulteret i et problem hos os. Det vil være fint, hvis du nu kunne afslutte hvad du begyndte og lukke spørgsmålet. Det gør du, i dette tilfælde (fordi der ikke kom brugbare svar) ved at oprette et svar, indlæg med prik ved Svar i stedet for ved Kommentar, sætte et 'flueben' i firkanten ved 'Accepter dette svar', og klikke på feltet 'Accepter svar og afgiv points'. Gider du?
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.