Anzeige:
Ergebnis 1 bis 5 von 5

Thema: MySQL, doppelte Datensätze löschen

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.11.2006
    Ort
    Ottobeuren
    Beiträge
    16

    Smile MySQL, doppelte Datensätze löschen

    Hallo,

    mache momentan Praktikum und muss einen MySQL Datenbankserver für die Warenwirtschaft erstellen, einrichten etc..
    läuft alles Perfekt...
    Nur, jetzt möchte ich gerne Adressen importieren und da kommen Probleme auf!
    Vorher hat der Betrieb die Adressen in einem Outlook, Excel änhlichen Programm verwaltet, sodass dort des öfteren Firmen doppelt eingegeben wurden. Ich möchte diese Daten jetzt aber löschen, was mir aber Probleme bereitet, da ich MySQL in der Version 3.23.58 betreibe und da noch keine Unterabfragen möglich sind.

    Habe bereits eingegeben:

    SELECT DISTINCT a.ID FROM tabelle AS a Left JOIN tabelle AS b on b.Fima=a.Firma AND b.ID>A.ID WHERE b.ID IS NOT NULL.

    Nun kann ich mit einem vorangestelltem INSERT Befehl die Daten in eine Tabelle kopieren und hätte das Ergebnis, ohne doppelte Datensätze!!

    Der Haken ist nur, dass ich nicht die doppelten Datensätze "selecten" möchte, sonder die nicht-doppelten Datensätze bzw. wenn es eine Möglichkeit gibt die doppelten mit Delete zu löschen, aber ich hab keine Ahnung hab schon wirklich viel versucht, aber keine Lösung gefunden.

    Mit dem normalen Select Distinct Befehl, also in dem Fall SELECT DISTINCT Firma hätte ich dass zwar, aber der REST vom Datensatz fehlt, es listet nur die Firmen auf, ohne Straße, PLZ, etc......

    Vielleicht kann mir ja jemand weiterhelfen.

    Gruß

  2. #2
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    Du kannst doch die doppelten Datensätze in eine temporäre Tabelle schreiben und nachher aus der richtigen Tabelle alle Datensätze löschen, die in dieser Temporären Tabelle vorkommen.

    Oder Du schreibst ein Programm/Skript, das auf die Datenbank zugreift, dann kannst Du Dir die doppelten Datensätze in einem Array merken und löschen.


    Eine Gesamt-Negation in SQL habe ich auch schon öfters haben wollen...:-/
    I haven't lost my mind - It's somewhere on a backup-disc

  3. #3
    Registrierter Benutzer
    Registriert seit
    02.11.2006
    Ort
    Ottobeuren
    Beiträge
    16
    Guten Morgen,

    danke erstmal für die Antwort, find´s schon mal prima, dass ich da weiterkomme. Ich bin nicht grade ein langjährig erfahrener SQL-Administrator und habe mir in den letzten drei Wochen alles von anfang an selber beigebracht!
    "Lange Rede kurzer Sinn", ich weiß nicht wie man das, was du mir schreibst in die Praxis umsetzt.
    Die doppelten Datensätze habe ich bereits in eine kurzfristig angelegte Tabelle geschrieben, nur wie lösche ich jetzt die Daten aus dieser Tabelle?
    Höchstwarscheinlich muss ich doch die Tabellen nach einem Kriterium vergleichen und dann die Datensätze löschen, nur wie?

    Gruß jamesplate

  4. #4
    Registrierter Benutzer
    Registriert seit
    02.11.2006
    Ort
    Ottobeuren
    Beiträge
    16

    Question

    Also,

    egal ob ich es mit einer temporären Tabelle versuche oder einer realen es funktioniert einfach nicht die Daten zu löschen.

    CREATE TEMPORARY TABLE temp SELECT DISTINCT a.ID FROM tabelle AS a Left JOIN tabelle AS b on b.Fima=a.Firma AND b.ID>A.ID WHERE b.ID IS NOT NULL.

    Mit Select kann ich nun auch die temporäre Tabelle abfragen!! Funktioniert alles, aber ich kann nicht vergleichen und löschen:

    DELETE ADRESSEN FROM Adressen, temp WHERE Adressen.ID = temp.ID;

    Dann erhalte ich einen Syntax-Fehler Error 1064!

    Ich bin mir fast sicher, dass das an der Version liegt, gibt es aber sonst keine andere Möglichkeit?
    Ich muss leider diese Version von MySQL nehmen, da das die best kompatibelste zu einem Open Source Warenwirtschafts, Faktura Programm ist.

  5. #5
    Registrierter Benutzer
    Registriert seit
    02.11.2006
    Ort
    Ottobeuren
    Beiträge
    16
    Es lag an der Version, hab jetzt eine neuere Version, da war es gar kein Problem die doppelten Datensätze zu löschen! Werde, wenn das Grundgerüst für die Warenwirtschaft steht dann wieder die ältere MySQL vesion hernehmen! Gruß

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •