'Duplikate' entfernen

Hallo zusammen,

ich habe ein kleines (?) Problem in einer Access-Tabelle, an dem ich mir die Zähne ausbeisse. Vielleicht kann mir jemand einen guten Tipp geben.
In unserem Betrieb hat jeder Kunde eine eindeutige Personen-Nummer. Einige Kunden sind in der Vergangenheit irrtümlich mehrfach erfasst worden (z.B. „Karl-Heinz Müller“ und „Karl Heinz Müller“, haben also zwei Personen-Nummern. Ich habe jetzt eine Abfrage als Access-Tabelle vorliegen, die solche Doppel-Zuordnungen enthält. Leider ist jede Zuordnung zweimal enthalten:

12345, Karl-Heinz Müller, 23456, Karl Heinz Müller
und
23456, Karl Heinz Müller, 12345, Karl-Heinz Müller

Ich suche jetzt nach einer Möglichkeit jeweils einen Datensatz der „Duplikate“ zu entfernen.

…ich weiss, die Frage ist ein klein bischen off-topic, aber vielleicht hat ja einer die rettende Idee…

Grüße
Thomas

Moien!

Select kundenname, perosnennummer from Kunden where kundenname in (select kundenname from kunden having count(personennummer) > 1 group by personennummer)

Wenn du dieses sql an deine Tabelle anpasst bekommst du alle Kunden gelistet die zwei oder mehr personennummern haben jeweils mit den dazugehörenden Kundennamen und personennummer.

Hieraus muttu dann halt die jeweils falschen manuell löschen.

Gruß
Bernd

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Bernd,

danke für Deine Antwort, leider trifft sie den Nagel nicht auf den Kopf,…WELCHE Kunden doppelt sind weiss ich bereits, nämlich ALLE in dieser Datenbank, mein Problem ist, dass jede Zuordnung doppelt enthalten ist (Sozusagen „von beiden Seiten“). Die Kundennamen sind auch geringfügig unterschiedlich, z.B. „Hans-Peter“ und „Hanspeter“

Gruß
Thomas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo, Thomas!

12345, Karl-Heinz Müller, 23456, Karl Heinz Müller
23456, Karl Heinz Müller, 12345, Karl-Heinz Müller

Ich behaupte mal, die stehen in der Tabelle „Tabelle1“, die Felder heißen „Id1“, „Name1“, „Id2“ und „Name2“. Die Id ist tatsächlich eine solche. Das heißt, es gibt sie nicht zwei Mal mit unterschiedlichen Namen.

Dann bekommst Du nur den ersten Datensatz wie folgt:

select id1, name1, id2, name2 from tabelle1 where id1 not in (select id2 from tabelle1 where id2\>id1) 

Ich habe dabei mal nur die Datensätze mit der jeweils kleineren Id im ersten Feld ausgewählt.

Ich suche jetzt nach einer Möglichkeit jeweils einen Datensatz
der „Duplikate“ zu entfernen.

Damit ist er nicht aus der Datenbank entfernt, d. h. gelöscht, aber das scheintest Du ja nicht zu wollen. Alternativ kannst Du natürlich die überzähligen Datensätze löschen:

delete \* from tabelle1 where id1 not in (select id1 from dieObigeAbfrage)

Dabei natürlich obige Abfrage unter irgendeinem Namen abspeichern.

Gruß, Manfred

Hallo Manfred,

danke für den Tipp …da hätte ich eigentlich auch selbst drauf kommen können, aber manchmal sieht man den Wald vor lauter Bäumen nicht.

Gruß
Thomas

Hallo,

kopiere die tabelle mit dendaten in eine neue tabelle ohne daten.
Setze den Index auf den namen oder Namen und postleitzahl.
Dann führe eine anfügeabfrage von der ausgangstabelle durch und füge die daten in die neue tabelle ein. Alle daoppelten werden wegen schlüsselverletzumg micht eingefügt. Dassollte passen.

Gruß Hans