nickdaniela
Goto Top

Dubletten filtern - Nur die Erste mit zugehöriger ID soll erhalten bleiben!

Ein Hallo an alle,
ich hoffe, ihr könnt mir helfen: Ich möchte Dubletten aus einem großen Datenbestand filtern - ca. 50.000 Telefonnummern, Bestand ständig steigend.
Export in andere Programme ist möglich.
Die Problematik sieht folgendermaßen aus: Ich möchte, dass die jeweils erste Telefonnummer erhalten bleibt, aber samt der dazugehörigen ID-Nr.!
Beispiel:
1 123
2 123
3 456
4 123
5 789
6 123
7 456
Übrig bleiben sollte dann:
1 123
3 456
5 789
Wie kann ich das erreichen?
Ich würde mich sehr freuen, wenn jemand eine Lösung wüsste - egal ob mit Excel, Access + welchen Scripten...
LG von Dani

Content-Key: 119936

Url: https://administrator.de/contentid/119936

Printed on: April 19, 2024 at 01:04 o'clock

Member: Biber
Biber Jul 07, 2009 at 16:49:33 (UTC)
Goto Top
Moin nickdaniela,

willkommen im Forum.
  • hat denn Deine Telefonnummernliste noch mehr Nutzdaten (also Felder) außer dem Feld "telefonnummer"?
  • was ist denn diese ID? So ein automatisch von Access angebotener und leichtfertig angenommener Autowert?
  • und wofür um alles in der Wert brauchst Du den? Da hast du dann irgendwann ganz viele Duplikate in Deinen Telefonnummern...

Grüße
Biber
Member: nickdaniela
nickdaniela Jul 07, 2009 at 17:07:11 (UTC)
Goto Top
Hallo Biber,
die ID ist einfach eine fortlaufende Nummerierung + befindet sich zusammen mit den Telefonnummern + anderen Angaben in dem dem Programm Cobra Adress Plus.
Aus diesem Programm kann ich aber in jedes Office-Programm + viele Formate nur diese 2 Angaben filtern.
Das Problem ist folgendes: Die Kunden rufen an + für jeden Anruf wird ein Datensatz angelegt.
Wöchentlich soll dann die ganze Datenbank gefiltert + um die Dubletten bereinigt werden.
Anhand der ID-Nr. kann ich festlegen, welche Kunden in der vergangenen Woche angerufen haben. Diese sollen dann noch mal kontaktiert werden, aber nur, wenn sie nicht schon in der Vergangenheit kontaktiert wurden.
Deshalb brauche ich zur Festlegung die ID-Nr. + es darf jeweile nur der erste Kundenanruf erhalten bleiben, während alle anderen rausfliegen.
LG von Dani
Mitglied: 80220
80220 Jul 07, 2009 at 17:23:07 (UTC)
Goto Top
Besteht die Möglichkeit, die fortlaufende Numerierung auf eine konstante Stellenzahl, z. b. 3 zu bringen, möglichst mit führender "0"?

Also

001 123
002 123
003 456
004 123
005 789
006 123
007 456

Ich denke dabei an eine Vorsortierung mit sort
Member: Biber
Biber Jul 07, 2009 at 17:28:21 (UTC)
Goto Top
Moin nickdaniela,

aber ich habe das richtig verstanden, dass
  • ihr auf die Datentabelle auch ganz normal per SQL zugreifen könnt
  • und auch Sätze gelöscht werden können/dürfen, ohne das diese Corba-Appz dadurch den Dienst verweigert?

Grüße
Biber
Member: nickdaniela
nickdaniela Jul 07, 2009 at 17:35:11 (UTC)
Goto Top
Hallo dumdideldum,
nein, leider ist es nicht möglich, Nullen bei der ID voranzustellen.

An Biber:
Die Antworten auf deine Fragen fallen mir etwas schwerer.
Also die Daten werden ja exportiert in Excel oder Access oder wo auch immer hin, wo die Lösung herbeigeführt werden kann + sie werden nicht zurück ins Cobra importiert, so dass mit den Daten eigentlich passieren kann, was will - auch gelöscht.
Und im Cobra verändert sich der Datenbestand ständig: Neue kommen hinzu, erledigte werden endgültig gelöscht. Deshalb muss diese Abfrage ja auch jede Woche aufs Neue durchgeführt werden, wobei wir nach längerer Zeit auch mal wieder ältere Kunden kontaktieren, die noch nicht endgültig erledigt werden konnten.
Mit SQL kenne ich mich leider nicht aus, aber ich glaube, dass es die Grundlage vom Cobra ist...
Mitglied: 80220
80220 Jul 07, 2009 at 17:40:01 (UTC)
Goto Top
Hallo, nickeldaniela,

nein, leider ist es nicht möglich, Nullen bei der ID voranzustellen.
Kannst du denn die ID wenigstens auf 3 Stellen bringen?
Member: nickdaniela
nickdaniela Jul 07, 2009 at 17:52:17 (UTC)
Goto Top
Also die ID ist mittlerweile durch ein paar Lücken sogar schon 6-stellig, aber sie fängt halt bei 1 an + die hat nur eine Stelle + kann auch nicht verändert werden.
Mitglied: 80220
80220 Jul 07, 2009 at 17:56:52 (UTC)
Goto Top
Dann ist ein einfaches Vorsortieren nach Stellen nicht möglich.
Vielleicht fällt Biber noch was Besseres zu SQL ein, damit kenne ich mich nicht aus.

Sonst gäbe es schon eine Lösung mit Batch, die aber mehrere Durchläufe erfordert.
Member: Biber
Biber Jul 07, 2009 at 18:00:22 (UTC)
Goto Top
Moin nickdaniela,

mit Access (oder irgendetwas, das ein paar Brocken SQL versteht) so:

  • Daten in das Datenbanktool importieren z.b unter dem Tabellennamen "Telefon"
  • unterstellt, dass die ID "ID" heißt und das Feld mit der Telefonnummer "Telefonnummer"
  • eine neue Abfrage erzeugen und direkt als SQL eingeben
Delete *
FROM Telefon 
where ID not in (Select min(ID) from Telefon  group by telefonnummer);

Beispiel:
Würde ein "SELECT alles/Select * from telefon" folgendes liefern
ID	telefonnummer	name	ort
1	123	name123	ort123
2	123	name123	ort123
3	234	name234	ort234
4	234	name234	ort234
5	444	name444	ort444
würden mit
select *
FROM Telefon 
where ID not in (Select min(ID) from Telefon  group by telefonnummer);
...diese Sätze gefunden.
ID	telefonnummer	name	ort
2	123	name123	ort123
4	234	name234	ort234
... bzw mit einem "DELETE * " statt "SELECT *" auch weggeknallt.

Grüße
Biber

<OT> @80220
Vielleicht fällt Biber noch was Besseres zu SQL ein..
Vielleicht konvertiert auch der Papst zum Katholizismus.. face-wink
</OT>
Mitglied: 80220
80220 Jul 07, 2009 at 18:33:43 (UTC)
Goto Top
Edit: 08.07.09 23:51

Ich muss doch nicht mehr ganz dicht sein. Bastele hier eine funktionierende Lösung, ohne das wenigstens ein Kommentar oder ein Dankeschön kommt.

Script gelöscht
Member: nickdaniela
nickdaniela Jul 08, 2009 at 21:44:57 (UTC)
Goto Top
Hallo Biber,
könntest du mir helfen + eine exakte Schritt-für-Schritt-Anleitung schreiben?
Der Bekannte, der uns das Programm verkauft hat + auch dafür verantwortlich ist, hat seine Grenzen erreicht + weiß nicht mehr weiter.
Ich exportiere 2x aus dem Cobra in Excel oder Access (welches du willst): Und zwar nur die beiden Spalten ID + Telefonummer, wobei allerdings die Telefonnummer bei dem einen Export unter Name1 steht.
Das Ergebnis sollte aber sein, dass ID + alle Telefonnummern untereinander in 2 Spalten stehen + dann die Dublettensuche gemacht werden kann.
Nach der Dublettensuche sollen dann nur die Telefonnummern in einer Excel-Datei untereinander weg per E-Mail weitergeleitet werden.
Ich habe minimalste Access-Kenntnisse, die schon 100 Jahre alt sind, aber vielleicht kriege ich es mit Hilfe ja hin...
LG von Dani
Member: Biber
Biber Jul 10, 2009 at 18:18:48 (UTC)
Goto Top
Moin nickdaniela,

könntest du mir helfen + eine exakte Schritt-für-Schritt-Anleitung schreiben?
Na ja.. ab welchem Schritt klemmt es denn?
Im exakten Schritt-für-Schritt-Erklären bin ich nicht so gut.

Abgesehen davon bin ich auch mit der skizzerten Lösung im Nachhinein nicht ganz glücklich, bzw. wenn eine meiner blutjungen rothaarigen Praktikantinnen mit diesem konzept bei mir aufgelaufen wäre - die würde wieder einen Bus später nach Hause fahren dürfen.

Der oben skizzerte Weg ist insofern Bullshit, weil... wer holt sich schon per Export aus einer SQL-sprechenden Datenbank alle 50000 Datensätze mit je 40 Attributfeldern, um diese Kopie dann zusammenzudampfen auf die 8000 relevanten Sätze und die 2 oder 5 interessanten Felder?

Geschickter wäre es doch, das o.a. SQL direkt auf diesen Cobra-Krams (was sich nu' auch nur ne einfache MDB/Access-Datei is') loszujagen.

Lass uns den zweiten Weg mal prüfen... aber am Besten am WE über PN oder Mail (in meinem Profil).

Grüße
Biber
Member: nickdaniela
nickdaniela Jul 10, 2009 at 19:35:19 (UTC)
Goto Top
Hallo Biber,
mit dem Bullshit hast du recht.
Nur leider bietet mir das Cobra keine Möglichkeiten an.
Ich habe zwar eine Dublettenkontrolle + bekomme dann alle Dubletten angezeigt, kann aber dann nicht sagen + jetzt blende alle so aus, dass nur noch die erste übrig bleibt.
Und die vorhandene SQL-Recherche ist eine für Dummys: Es ist eine reine WHERE-Abfrage, wobei aber eine eigene Eingabe erst ab dem dem Where möglich ist, so dass man noch nicht mal mit DISTINCT arbeiten kann, dass ja nach dem SELECT stehen muss. ;o(
LG von Dani
Member: Biber
Biber Jul 11, 2009 at 12:36:36 (UTC)
Goto Top
Moin nickdaniela,

ich meinte auch nicht, dass ich das über die eventuell bei Cobra vorhandenen Filter/Export-Zusammenklick-Features machen wollte.
Sondern ganz normal "von außen" über irgendwas, was halb so viel SQL spricht wie ich, mich mit der Cobra.mdb (oder wie die heißen mag) verbinde und da höflich nachfrage. Nicht bei der Kundenauftragsannahme um einen Beratungstermin ersuche , sondern beim Hausmeister klingele.

Nicht von innen heraus mit Stützrädern und "Klicken Sie an, was Sie sehen wollen", sondern direkt.

Wenn diese Cobra-Jungs&Mädels irgendwann vor Jahren die Idee hatten, irgendeine Adress-Verwaltung in einem Standard-Datenbankformat auf den Markt zu schmeißen statt in einem selbst ausgedachten Dateiformat, dann hatten Sie sicherlich im Hinterkopf, dass diese Daten eben nicht nur mit einer Applikation interpretiert werden können sollen, sondern programmunabhängig sind.

Lass uns mal mailen/PNen bitte.

Grüße
Biber