Duplikate ausfindig machen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Duplikate ausfindig machen

    Hey,

    1. Wie kann ich Duplikate in einer Tabelle ausfindig machen?
    2. Wäre es dann möglich diese Automatisch zu löschen?

    Fallbeispiel:
    Tabelle Adresse:

    L_Nr | Name | Vorname| Geburtstag | etc .....
    1 |Mustermann | Muster | 01.01.2003 | etc
    2 | Musterman | Muster | 01.01.2003 | etc
    3 |Mustermann_|Muster | 01.01.2003 | etc
    4 |Mustermann | Muster | 10.01.2003 | etc

    Ich hoffe das mein Beispiel die Problematik gut erläutert. Ein Sekundärschlüssel würde mir in diesem Fall nicht weiter helfen.

    Ich hab an die Aggregationsfunktion "stddev" gedacht, bin mir aber überhaupt nicht sicher.

    Und zu 2. Wie könnte SQL entscheiden, welches der richtige Eintrag wäre?

    Hoffe auf eine Gute zusammenarbeit

    Achja
    Heut ist ein schöner Tag

  • #2
    Re: Duplikate ausfindig machen

    Original geschrieben von Gostell
    1. Wie kann ich Duplikate in einer Tabelle ausfindig machen?
    in dem du ein GROUP BY auf die felder machst, die als kriterium dienen sollen, und deren vorkommen dann mit COUNT() zählst.


    Fallbeispiel:
    Tabelle Adresse:

    L_Nr | Name | Vorname| Geburtstag | etc .....
    1 |Mustermann | Muster | 01.01.2003 | etc
    2 | Musterman | Muster | 01.01.2003 | etc
    3 |Mustermann_|Muster | 01.01.2003 | etc
    4 |Mustermann | Muster | 10.01.2003 | etc

    Ich hoffe das mein Beispiel die Problematik gut erläutert.
    nein, sorry.

    in dieser tabelle befinden sich (wenn man jetzt mal von den gleichen geburtsdaten absieht) überhaupt keine "duplikate".
    die kombination name und vorname ist bei jedem dieser datensätze anders - also gibt es da auch nichts, was man als "duplikat" bezeichnen könnte.


    Und zu 2. Wie könnte SQL entscheiden, welches der richtige Eintrag wäre?
    so langsam kommen wir ja zumindest schon mal dem näher, was du eigentlich willst.

    du willst keine "duplikate" finden, sondern unter unterschiedlichen schreibweisen für eigentlich ein und das selbe datenobjekt die fehlerhaften rausfinden.

    dass diese entscheidung, welcher jetzt "richtig" ist, und welche "falsch", nicht so ohne weiteres von mysql getroffen werden kann, sollte eigentlich logisch sein.

    und ehrlich gesagt können auch du und ich nicht sagen, welcher von den obigen vier datensätzen der "richtige" wäre - weil du "richtig" noch gar nicht definiert hast.

    wenn du das überhaupt automatisiert abhandeln willst, musst du entweder eindeutige regeln definieren, wann ein datensatz "richtig" und wann "falsch" wäre, oder du musst den datenbestand mit einer menge an als "richtig" definierten datensätzen anderer herkunft vergleichen.



    (p.s.: vielleicht ist deine beispieltabelle aber auch einfach nur zu schlecht formatiert, um echte duplikate erkennen zu können.)
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hallo wahsaga,
      Erst einmal vielen dank das du so schnell geantwortet hast.

      Zu Punkt 2: geb ich dir recht, ich seh das genauso, evt könnte man das mit einem Informationskatalog erstellen wobei dieser dann wohl recht Unterschiedlich ausfallen würde und recht schwer handbar ....

      Aber wieder back zu 1. (Mein Main Thema)
      Leider ist die Tabelle so wie sie aussieht. Mir geht es um das "allgemeine Qualitätsmanagement". Das soll heißen die Tabelle hat leider fehlerhafte Daten. Somit hast du natürlich recht, im engeren Sinne sind das keine Duplikate, aber es sind fehlerhafte "Redundante" Daten. So etwas kann sehr schnell passieren egal wie die Tabelle aufgebaut ist.

      Darum nun meine erneute Frage, wie kann ich diese "eng verwanten" Duplikate aufspüren? Bei 4 Einträgen ist das einfach bei 10.000 Datensätzen wird das schon etwas schwieriger

      Schöne Grüße
      Sebastian
      Heut ist ein schöner Tag

      Kommentar


      • #4
        Hallo Gostell
        Gute Daten bekommst Du aus verratzten Daten nicht mehr.

        Bessere Daten bekommst Du aber,
        wenn Du die mit REPLACE alle Leerzeichen,Sonderzeichen und sonstigen Müll rauswirfst (eventuell mit einer neuen Spalte) und dann mit GROUP BY 'drauf gehst.

        Eindeutige Zeilen bekommst Du dann mit max() und min(),
        natürlich irgendwelche und nicht zwingend von einer Zeile!!!

        Statt REPLACE kannst Du auch soundex versuchen.

        Viel Glück


        Original geschrieben von Gostell
        ... So etwas kann sehr schnell passieren egal wie die Tabelle aufgebaut ist....
        So etwas sollte nur passieren wenn man Datenmüll [B]erbt[/].
        Das Schlimmste sollte eigentlich das Eingabeformular abfangen.

        Kommentar

        Lädt...
        X