Avatar billede magoo20000 Nybegynder
13. september 2002 - 14:10 Der er 9 kommentarer og
3 løsninger

dubletter

Hej eksperter!

Jeg har følgende problem:
Jeg har en access db med en ca. 10 kolonner. Første kolonne er ID og der er mange(!) dubletter.
Derfor vil jeg gerne have disse ID'er filtreret fra og samtidig lagt over i en ny tabel, så den er klar til at benytte! Alle de andre ca. 9 kolonner skal naturligvis følge med over i denny tabel.

På forhånd tak!

Martin
Avatar billede lasse_buck Nybegynder
13. september 2002 - 14:21 #1
Du kan evt. lave en create query:
SELECT * FROM mintabel WHERE id in (
SELECT id FROM mintabel GROUP BY id HAVING count(*)>1);

Jeg kan ikke huske, om det hedder mintabel.* i Access.

Derefter laver du en delete
DELETE FROM mintabel WHERE id in (
SELECT id FROM mintabel GROUP BY id HAVING count(*)>1);
Avatar billede mugs Novice
13. september 2002 - 14:23 #2
Åbn databasen i databasevinduet. Vælg fanen forespørgsler og brug guiden Find Dubletter. Tilføj relevante felter. Du har nu isoleret alle dubletter og kan ved en tilføjelsesforespørgsel sende dem over i en ny tabel.
Avatar billede magoo20000 Nybegynder
13. september 2002 - 14:38 #3
lasse >> Med din delete sletter jeg vel både dubletten og den oprindelige!??
Avatar billede lasse_buck Nybegynder
13. september 2002 - 15:02 #4
Første select finder alle rækker, hvor der er dubletter. De oprettes så i en ny tabel.

Efterfølgende delete sletter alle rækker, som er dublererde. Læg mærke til "WHERE id IN...". Det er kun de rækker du lige har kopieret, som slettes.

Hvis du har to rækker med samme id, så er du nød til at flytte BEGGE rækker (med mindre man kan afgøre, hvilken række der er mest korrekt).

Det lyder som om, at mugs løsning gør præcis det samme som min. Jeg bruger ikke Access så meget.

Gør det sikre: Prøv først på en KOPI af tabellen :o)
Avatar billede sjap Praktikant
13. september 2002 - 18:50 #5
Alternativt forslag:

1. Lav en kopi af tabellen uden data.

2. Angiv ID'en som primær nøgle i den ny tabel.

3. Lav og kør nedenstående forespørgsel
      INSERT INTO NyTabel
      SELECT *
      FROM GammelTabel;

Den primære nøgle sikrer at data kun kan overføres én gang.
Avatar billede mugs Novice
13. september 2002 - 18:53 #6
mangoo > superjab's forslag er nok det nemmeste, hvis du ikke er helt inde i Access.
Avatar billede lasse_buck Nybegynder
13. september 2002 - 21:21 #7
magoo > superjap's forslag giver dig en ny tabel, hvor der er 'luget ud' i dubletterne, men mugs' og mit forslag hælder alle dubletterne over i en anden tabel.
Avatar billede mugs Novice
13. september 2002 - 21:25 #8
lassde buck > Hvad er forskellen? superjab foreslår jo netop at lave en ny tabel men uden data, og derefter køre en tilføjelsesforespørgsel der sender alle data herover, men kun een gang da ID er primær nøgle.

Så for mig at se er resultatet det samme, omend fremgangsmåden er lidt forskellig.
Avatar billede lasse_buck Nybegynder
14. september 2002 - 16:10 #9
Eksempel på GammelTabel:
ID  X  Y
1  1  1
2  2  2
2  22  22
3  3  3
4  44  44
4  4  4

Med superjab's metode får man NyTabel:
1  1  1
2  2  2
3  3  3
4  44  44

Der hvor der er ID-dubletter, bliver kun den ene række bevaret - nemlig den der tilfældigvis ligger først i den oprindelige tabel. Måske er det IKKE ligemeget, hvilke rækker der bliver fjernet. Det lød på mangoo som om, at han gerne ville have ALLE dubletter over i en anden tabel.
Avatar billede magoo20000 Nybegynder
14. september 2002 - 17:49 #10
Super! Det virker! Har købt mig en sql bog...Det trængte jeg vist til!
mugs og lasse buch >> Jeg kan bruge begge jeres forslag.. Er 50/50 fair eller er det først til mølle vi kører efter her?
Avatar billede magoo20000 Nybegynder
14. september 2002 - 19:00 #11
Nej... I må alle deles :-)
Avatar billede lasse_buck Nybegynder
16. september 2002 - 08:48 #12
Tak for point - det er rart at kunne hjælpe :o)
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