Avatar billede bsr0809 Nybegynder
28. februar 2008 - 12:20 Der er 15 kommentarer

Fjernelse af dubletter undtagen dublet 1

HASTER HASTER!
Jeg har en DB med en masse adresser der findes dubletter af. Hvordan kan jeg nemt fjerne disse dubletter?
Mit eget forslag var blot at lave en simple dublet forespørgelse, og derefter give dem f.eks. et 1 tal som status kode. Mit problem er at det den første dublet skal bibeholdes.

Nogen der kan fortæller mig hvordan jeg kan lave en forespørgelse som reagerer på følgende måde:

Status kode - Vej navn
0 - Roskildevej 143
1 - Roskildevej 143
1 - Roskildevej 143
1 - Roskildevej 143
0 - Finsensvej 4
1 - Finsensvej 4

osv.
Det gør ikke noget om den tæller 1, 2, 3, 4, 1, 2 - så kan jeg blot lave en ny forespørgelse og bede om alt under 2.

Da opgaven virkelig haster så er der mange points i den.
Avatar billede jensen363 Forsker
28. februar 2008 - 12:57 #1
Hvordan finder du ud af hvikle rækker der er dubletter og hvilke der er den/de række(r) der skal slettes ?
Avatar billede jensen363 Forsker
28. februar 2008 - 12:58 #2
Er statuskode 0 den/de række(r) du vil beholde ?
Avatar billede bsr0809 Nybegynder
28. februar 2008 - 13:13 #3
Ja 0 er f.eks. dem jeg vil beholde. Jeg beyntter en dublet forspøgelse ganske normalt hvor der blot fremkommer en liste over alle poster med dubletter.
Avatar billede jensen363 Forsker
28. februar 2008 - 13:17 #4
0 er det en værdi du har i tabellen

I givet fald kan du slette alle der er forskellig fra den værdi :

DELETE Tabel1.[Status kode], Tabel1.[Vej navn]
FROM Tabel1
WHERE (((Tabel1.[Status kode])<>0));
Avatar billede bsr0809 Nybegynder
28. februar 2008 - 13:21 #5
Ja det er jeg helt med på, og det er ingen problemer for mig at få slettet posterne. Problemet er at få dem givet statuskoder.
Avatar billede Slettet bruger
28. februar 2008 - 13:26 #6
Lav et indeks så du får unikke poster, evt. et indeks indeholdende flere felter!~)
Avatar billede kimiwan Nybegynder
28. februar 2008 - 13:30 #7
prøv flg...

1. opret en kolonne med unikke id værdier ([ID]), hvis du ikke allerede har det

2. delete from tabel1 where id not in (select min(id) from tabel1 group by [vej navn])

/Kim
Avatar billede bsr0809 Nybegynder
28. februar 2008 - 13:32 #8
Hej igen.
Mit problem er IKKE at få dem slettet da dette kun skal ske en gang. Mit problem er at få givet en status kode, så jeg kan sorterer hvad der skal slettes og ikke skat.
Avatar billede kimiwan Nybegynder
28. februar 2008 - 13:34 #9
ok, så kan vi da rette den lidt til... :)

1. opret en kolonne med unikke id værdier ([ID]), hvis du ikke allerede har det

2. update tabel1 set [status kode]=0

3. update tabel1 set [status kode]=1 where id not in (select min(id) from tabel1 group by [vej navn])

/Kim
Avatar billede bsr0809 Nybegynder
28. februar 2008 - 14:37 #10
Beklager men jeg kan simpelthen ikke finde ud af det. Hvis jeg sender en database med noget test data er der så en der vil hjælpe mig?
Avatar billede terry Ekspert
28. februar 2008 - 19:13 #11
ekspertenATsanthell.dk

AT = @
Avatar billede Jørgen Kirkegaard Professor
05. marts 2008 - 15:35 #12
Skal du bruge 'status kode' eller er det bare for at kunne få de unikke rækker?
Avatar billede Jørgen Kirkegaard Professor
05. marts 2008 - 15:48 #13
Hvis du bare skal have de unikke rækker kan du bruge Group By og First. Hvis du skal slette dubletterne, må du have nøglen med (f.eks. en autonummerering) og bruge First på den også. Eksempel, hvor jeg har taget AutoId med som nøgle:

SELECT First(Tabel1.AutoId) AS FørsteOfAutoId, First(Tabel1.[Vej Navn]) AS [FørsteOfVej Navn]
FROM Tabel1
GROUP BY Tabel1.[Vej Navn];

Denne giver:
FørsteOfAutoId    FørsteOfVej Navn
5    Finsensvej 4
1    Roskildevej 143

Dette er de unikke. Hvis du vil slette dubletter, kan du søge de andre frem.
Avatar billede Slettet bruger
06. marts 2008 - 08:09 #14
Ang: 28/02-2008 13:26:37

Har du prøvet at lave et indeks, du går ind i tabeldesign og i menulinjen, Vis/Indeks

Så fremkommer en lille tabel hvor du taster indeksnavn (du finder bare selv på et) og så skriver du det første felt, som skal indgå i dit indeks det kunne være Status kode, du skriver så ja til at det skal være Unikt indeks. Så hele pointen er at hvis du så laver en linie nedenunder, hvor du ikke skriver et indeksnavn, men kun udfylder feltnavn med Vej Navn, så opstår der et sammensat indeks hvor der kun tillades en udgave af hver kombination!~)

Den vil når du opretter den, sige at det vil betyde slettede data, så tag lige en backup først, men du siger ok og så skulle der kun være en udgave af kombinationen status kode/vej navn og fremover vil man ikke kunne komme til at oprette dubletter...
Avatar billede terry Ekspert
06. marts 2008 - 19:14 #15
"Da opgaven virkelig haster så er der mange points i den." :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