phpbar.de logo

Mailinglisten-Archive

AW: AW: [php] Doublettenabgleich

AW: AW: [php] Doublettenabgleich

Thomas Schön php_(at)_phpcenter.de
Thu, 24 Oct 2002 09:57:43 +0200


Hallo,

> O.k.  aber  wie  kannst  Du die Doppelten löschen? Nach
> T23236 kann man ja nicht suchen, oder?
>

in der Datenbank steht neben strasse, plz, ort, vorname, nachname, usw. eben
auch der zusammengesetzte soundexcode.
Der soundexcode wird bei anlegen des Datensatzes bereits geschrieben.
Wird nun ein neuer Datensatz in die Tabelle eingefügt, wird dessen
soundexcode am besten sogar per script generiert und allein nach dem
soundexcode in der Datenbank gesucht. (SELECT id FROM... WHERE
soundex_code='$code')
Wird ein Datensatz gefunden, so wird dieser Datensatz geupdatet (evtl. nur
leere Felder überschreiben, je nachdem)
Wird kein Datensatz gefunden, so wird der neue Datensatz per INSERT
eingefügt.

Wenn du eine bestehende Datenbank mit Adressen haben solltest, und willst
diese abgleichen, dann würde ich ein neues Feld in deine Tabelle einfügen.
Dieses Feld kannst du dann füllen:
UPDATE adressen set
soundex_code=CONCAT(ucase(anrede),soundex(vorname),soundex(nachname),soundex
(strasse),plz);
Den Abgleich kannst du dann wohl nur per script machen. Einfach "GROUP BY
soundex_code" suchen und alle Datensaetze die doppelt sind
entfernen/deaktivieren.
Wenn du Datensaetze entfernst musst Du aber aufpassen, dass die
Tabellenabhaengigkeiten nicht verletzt werden zu evtl. anderen Tabellen.

Gruss, Tom


php::bar PHP Wiki   -   Listenarchive