Avatar billede ds-zim Nybegynder
28. april 2000 - 13:27 Der 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!
Avatar billede steffen Nybegynder
28. april 2000 - 13:29 #1
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).

Ellers skriv noget mere info ..
Avatar billede jgc Nybegynder
28. april 2000 - 23:04 #2
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.
Avatar billede privaten Nybegynder
30. april 2000 - 12:29 #3

Hej

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

Vupti, det hele tager kun 2 min
Avatar billede privaten Nybegynder
30. april 2000 - 12:32 #4

Punkt 5: det er selvfølgelig den originale tabel der danner input for din query... (just in case)

Avatar billede ds-zim Nybegynder
11. maj 2000 - 10:22 #5
Sorry ppl, har haft latterligt travlt :(
Tester lige dit svar 'Privaten' :)
Avatar billede privaten Nybegynder
12. maj 2000 - 13:05 #6
Hvordan gik testen?
Avatar billede ds-zim Nybegynder
15. maj 2000 - 14:47 #7
Æ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.
Avatar billede privaten Nybegynder
15. maj 2000 - 14:55 #8
Query-Wizard er den lille tingest der hjælper med at oprette forspørgelser mod tabeller eller andre forspørgelser i en rasende fart.

I dette tilfælde skal du bruge alle rækker i den gamle table og tilføje dem til den nye...

Det svarer til noget i denne retning (tabel & feltnavne skal selvfølgelig udfyldes)

INSERT INTO NewTabel ( Felt1, Felt2, Felt...... )
SELECT OldTabel.Felt1, OldTabel.Felt2, OldTabel.Felt....
FROM OldTabel;
Avatar billede jgc Nybegynder
15. maj 2000 - 14:57 #9
I SQL er fremgangsmåden således:

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.

/Jens
Avatar billede jgc Nybegynder
15. maj 2000 - 15:04 #10
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.

Skriv hvis du skal have mere hjælp.
Avatar billede ds-zim Nybegynder
16. maj 2000 - 12:41 #11
Jeg har testet og afprøvet jeres forslag og har fået en tabel der er "renset" :)
Tak for hjælpen gutter, 'JGC' fik 60 point pga hans SQLbesvarelse
Avatar billede privaten Nybegynder
16. maj 2000 - 14:15 #12
Super...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester