28. april 2000 - 13:27Der er
10 kommentarer og 2 løsninger
SQL-forespørgsel
Her i firmaet har vi en så fragmenteret leverandørtabel, at det er på tide at få den renset. Primærnøglen er en autonummerering og derudover findes flere felter ( Navn,Adresse, Blah ... ) Mit hjertesuk lyder; Hvordan konstruerer jeg en forespørgsel som er istand til at oprette en "ny" tabel på basis af den fragmenterede tabel, og derved får en sekventiel rækkefølge for alle leverandørene. Håber I kan følge mig, jeg er klar til at give jer alle felterne til et evt. eksempel. Max point udløses kun ved komplet, testet løsning!
Jeg synes det lyder som om det ville være nok at sætte et index på leverandørerne også. (Hvis grunden til at de skal være sekventielle er for at få en hurtigere søgning).
Hvis ikke basen indeholder fejl, skulle det være nok med en komprimering.
Men hvis du gerne vil have nye id-numre - uden "huller", så lav en lav en kopi af din tabel uden data, komprimér databasen og lav en tilføjelsesforespørgsel fra din gamle tabel til den nye. Her skal alle felter pånær id/autonummerfeltet medtages - det burde virke.
1: Opret en kopi af tabellen - med CTRL+C og CTRL+V 2: Kald for nemheds skyld tabellen for kopi1 3: Slet alle records i "kopi1" 4: Opret en kopi af "kopi1" på samme måde (pkt. 2), kald den for "kopi2"
nu har vi en tabel der er nulstillet, men med samme layout som den originale tabel
5: Opret en almindelig query med din Query-Wizard, alle felter skal med 6: Check at queryen tager alle records med 7: Nu skal du ændre din query til at være en append-query om tabellen den skal appende til er selvfølgelig "kopi2" 8: Rename den gamle tabel til et velegnet backup-navn 9: Rename "kopi2" til det originale tabelnavn
Æh .. Øh .. Query-Wizard ?!? Hva' faen er det ? Jeg arbejder i Access2K og ville egentlig have hjælp til at opfriske mine SQL egenskaber :) Seføli', hvis der findes en "nemmere" vej til at løse problemet er jeg intereseret.
SELECT leverandoer.* INTO nyleverandoer FROM levenrandoer;
Den kopierer rub og stub til en ny tabel. Så kan du åbne den nye tabel i designvisning, slette det gamle idfelt og tilføje et nyt autonummer felt. Gem og vis tabellen - så har du alle dine (fortløbende) autonumre. Gå bagefter ind i design igen, og sæt det nye idfelt til at være primærnøgle.
Denne metode er testet og virker. Det er muligt at du kan sætte primærnøglestatus på det nye felt med det samme - men det har jeg så ikke testet.
OBS: Inden du går ind og ændrer primærnøgleværdierne på noget som helst bør du sørge for at eventuelle relaterede poster i andre tabeller følger med. Har du f.eks. en ordretabel med leverandør.id som fremmednøgle, skal du også opdatere din ordretabel.
Det er ikke specielt svært - men får du smidt din gamle tabel ud uden at tage højde for de relaterede tabeller, får du store problemer.
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.