Avatar billede jensen363 Forsker
20. oktober 2016 - 11:55 Der er 9 kommentarer og
1 løsning

Find dubletter og returnér dublét ID nummer

Mit datasæt består af XX antal mailadresser I en database - jeg har behov for at identificerer dubletter I form af at dubletterne nummerreres sætvis i forhold til de dubletter der findes I datasættet.

Eksempel :

Mailadresse    ID
XXX@XXX      ID 01     
YYY@YYY      ID 02
ZZZ@ZZZ      ID 00
XXX@XXX      ID 01
YYY@YYY      ID 02

Alle mailadresser som kun optræder een gang får samme ID indtil de begynder at optræde som dublét I mit datasæt ....

How to do ?
Avatar billede Rune1983 Ekspert
20. oktober 2016 - 15:00 #1
Hej Jensen

Jeg har brugt denne form for SQL udtræk til at finde dubletter med i min MySQL database.
Prøv se om du kan det samme ved at rette eksempel nedenfor så det passer til dit.
Eksempel
SELECT * FROM TableMailAdresser
GROUP BY kolonneMail
HAVING (count(kolonneMail)) != 1
Avatar billede fdata Forsker
20. oktober 2016 - 15:15 #2
Opret en sum-forespørgsel, der summerer på email adressen.
Løb så denne igennem med VBA og tildel numre til de tilsvarende poster i din tabel. Noget i denne stil:

Sub TildelNumre()
  Dim Db As Database
  Dim Rst As Recordset
  Dim i As Integer
 
  i = 1
  DoCmd.SetWarnings False
  Set Db = CurrentDb
  Set Rst = Db.OpenRecordset("SumForespørgsel", dbOpenSnapshot)
  With Rst
    If Not .EOF Then
      Do
        DoCmd.RunSQL "UPDATE Tabel1 SET ID1=" & i & " WHERE Mailadresse='" & !Mailadresse & "'"
        i = i + 1
        .MoveNext
      Loop Until .EOF
    End If
    .Close
  End With
  DoCmd.SetWarnings True
  Set Rst = Nothing
  Set Db = Nothing
End Sub
Avatar billede jensen363 Forsker
20. oktober 2016 - 15:26 #3
Opret en sum-forespørgsel, der summerer på email adressen ???
Avatar billede jensen363 Forsker
20. oktober 2016 - 15:44 #4
Får compile error ved afvikling af VBA koden

Expected user-defined type, not project
Avatar billede jensen363 Forsker
20. oktober 2016 - 15:46 #5
Ahhh 

Dim Db As DAO.Database
Avatar billede jensen363 Forsker
20. oktober 2016 - 16:04 #6
So far so good ... går ud fra at det virker ... det tager bare lidt tid at behandle 4 mio rækker :-)  ......

Næste gang jeg skal opdatere tabellen er der kommet nye mailadresser til ... disse skal også grupperes/nummereres, men denne nummerering skal fortsætter hvor, ikke starte på ny og ikke omdøbe den hidtidige nummerering !!!
Avatar billede terry Ekspert
20. oktober 2016 - 17:44 #7
why have duppletter in the first place?
Avatar billede jensen363 Forsker
21. oktober 2016 - 10:37 #8
Hi Terry

The entire row is unique .... showing orders on different products, - my purpose is to - based upon customer email - create a unique customer #num id use this for GROUP BY purposes instead of the entire email address :-)
Avatar billede fdata Forsker
21. oktober 2016 - 11:26 #9
OK. 4 mio poster. Det var jo lidt svært at gætte ud fra dit lille eksempel ;O)

Hvorfor ikke opsamle emailadresserne i en separat tabel, som også indeholder et kundenr. (autonummerering felt)? Så skal du bare løbende tilføje nye emailadresser; men det er jo en simpel forespørgsel. (Og numrene tildeles automatisk)

Opret så en forespørgsel, der linker ordrerne til den nye tabel via emailadressen. Det giver vel det resultat, du leder efter. Eller hvad?
Avatar billede jensen363 Forsker
21. oktober 2016 - 11:48 #10
fdata > det er ok ikke at bruge mere tid på det, jeg har fårt bevis for at det er en mulig vej - blot ikke en opgave som Acces vil være særligt egnet til, men din SQL kan let implemeteres på vores SQL server / datawarehouse
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

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