Avatar billede mvk Nybegynder
23. september 2005 - 15:13 Der er 9 kommentarer og
1 løsning

Query der sletter dubletter

Jeg har en tabel som jeg ønsker at løbe igennem og slette dubletter af brugerne så de kun eksisterer 1 gang. Nøglen som skal bruges er email adressen. Hvordan kan man gøre det ?
Avatar billede claesdamlund Nybegynder
23. september 2005 - 15:23 #1
Er det ligegyldigt hvilke af dubletterne?
Avatar billede mvk Nybegynder
23. september 2005 - 15:25 #2
ja. jeg tænkte at man bare kunne lave en liste der ORDER BY Email ASC og så bare slette de dubletter der måtte komme efter den første
Avatar billede claesdamlund Nybegynder
23. september 2005 - 15:38 #3
Har du en entydig ID på posterne?
Avatar billede mvk Nybegynder
23. september 2005 - 16:05 #4
ja alle poster har et unikt id
Avatar billede claesdamlund Nybegynder
23. september 2005 - 16:23 #5
Så prøv:

DELETE tabel.id
FROM tabel
WHERE (((tabel.id) Not In (select first(id) from tabel group by email)));

Hvor tabel er navnet på din tabel og id er navnet på dit id felt. Tag lige en kopi af din tabel inden du prøver den :o)
Avatar billede fynbohans Nybegynder
24. september 2005 - 12:05 #6
Lav en ny tabel (Tabeloprettelseseforespørgsel) af en forespørgsel, hvor du under Totaler har valgt Antal.
Avatar billede claesdamlund Nybegynder
24. september 2005 - 20:00 #7
Det løser ikke hans problem fynbohans - i den tabel ville alle poster ryge over hvor email findes mere end 1 gang, og så er man lige vidt. Mit forslag fra før burde fungere uden at oprette tabeller osv.
Avatar billede mvk Nybegynder
26. september 2005 - 08:44 #8
claesdamlund det spiller. Tak!

Nu har jeg så en Master tabel som ikke har nogen dubletter. Jeg skal importere en ny liste hver 14. dag som skal ligges oven i Master tabellen - men det er kun nye informationer der skal ligges i tabellen. Er der nogen måde hvorpå jeg kan sørge for kun at importere ny data så der ikke via mine nye lister kommer dubletter ind i Master tabellen ?
Avatar billede mvk Nybegynder
26. september 2005 - 08:44 #9
btw - du skal have point.
Avatar billede claesdamlund Nybegynder
26. september 2005 - 09:36 #10
Prøv med følgende tilføjelsesforespørgsel:

INSERT INTO tabel(felt1, felt2, felt3)
SELECT felt1, felt2, felt3
FROM liste
WHERE NOT EXISTS(SELECT * tabel WHERE tabel.email = liste.email)

Håber du selv kan indsætte de relevante felter. Eksemplet forudsætter at det der afgør om en record fra din liste skal indsættes i din tabel, er at email i listen ikke i forvejen eksisterer som email i din tabel (ikke verdens bedste forklaring, men håber den er til at gennemskue...).
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