xpfreund: sql Duplikate finden und entfernen

Hallo,

also ich habe eine Datenbank "termine":
von  an  event  note      datum
1       7     Neujahr  Feiertag   2007-01-01
1       9     Neujahr  Feiertag   2007-01-01

Diese Termine werden durch eine Datei eingelesen, die eigentlich pro Jahr nur einmal eingelesen werden soll, also nur neue Termine. Jetzt kann es aber sein, dass die Datei aus Versehen nochmal eingelesen wird. Dadurch wären alle Termine doppelt. Wie kann ich dem sagen, dass doppelte Einträge (also von, an, event, note und datum gleich) automatisch gelöscht werden sollen?

Vielen Dank für eure Hilfe

gruß aus Senftenberg am See

  1. Hallo,

    Wie kann ich dem sagen, dass doppelte Einträge (also von, an, event, note und datum gleich) automatisch gelöscht werden sollen?

    Vorbeugend: Richte einen unique- Key auf diese Felder ein, dann wird ein doppelter Wert von der Datenbank gar nicht erst angenommen.

    Kalle

    1. yo,

      Vorbeugend: Richte einen unique- Key auf diese Felder ein, dann wird ein doppelter Wert von der Datenbank gar nicht erst angenommen.

      und noch vorbeugender, von seiten der applikation absichern, dass doppelte datensätze erst gar nicht versucht werden, nochmals aufzunehmen.

      Ilja

      1. Vorbeugend: Richte einen unique- Key auf diese Felder ein, dann wird ein doppelter Wert von der Datenbank gar nicht erst angenommen.

        und noch vorbeugender, von seiten der applikation absichern, dass doppelte datensätze erst gar nicht versucht werden, nochmals aufzunehmen.

        Das würde bedeuten, du musst jeden Wert erstmal lesen, bevor du schreibst. Das halte ich für unsinnig. Die Datenbank meldet sich doch und der Fehler kann abgefangen werden, zum Beispiel ein Protokoll erstellt werden.

        Kalle

    2. Hallo,

      Vorbeugend: Richte einen unique- Key auf diese Felder ein, dann wird ein doppelter Wert von der Datenbank gar nicht erst angenommen.

      Geht wahrscheinlich nicht, denn event ist bis zu neunmal das gleiche, genau wie datum und das Feld "von". Der einzige Unterschied ist dann im Feld "an", allerdings nicht bei einem anderen event, da wiederholen sich die Zeilen.
      Deswegen denke ich das das dann keinen Sinn macht. Daher suche ich die entsprechende Abfrage zur Doppeltenfindung.

      gruß aus Senftenberg am See

      1. Hallo,

        wenn du "doppelte" Sätze löschen willst, musst du definieren, was "doppelt" bedeutet.

        Der einzige Unterschied ist dann im Feld "an", allerdings nicht bei einem anderen event, da wiederholen sich die Zeilen.

        Dein Beispiel war:
        von  an  event  note      datum
        1       7     Neujahr  Feiertag   2007-01-01
        1       9     Neujahr  Feiertag   2007-01-01

        Ist das ein doppelter Eintrag?
        Dann wäre (von, event, note, datum) der unique- Key.

        Kalle

        1. Hallo,

          Dein Beispiel war:
          von | an |  event   |  note     | datum
          1   | 7  |  Neujahr |  Feiertag | 2007-01-01
          1   | 9  |  Neujahr |  Feiertag | 2007-01-01

          Ist das ein doppelter Eintrag?
          Dann wäre (von, event, note, datum) der unique- Key.

          Definition doppelt:

          Doppelt wäre, wenn jetzt noch:
          von  | an |  event  | note   |   datum
          1    | 7  |  Neujahr|Feiertag|   2007-01-01

          dazu kommen würde, also die Datensätze von oben sich auf jedes Feld wiederholen würden, da an, event, datum, note und datum gleich sind. von bleibt für die Art von Terminen immer gleich.

          gruß aus Senftenberg am See

      2. echo $begrüßung;

        Vorbeugend: Richte einen unique- Key auf diese Felder ein, dann wird ein doppelter Wert von der Datenbank gar nicht erst angenommen.
        Geht wahrscheinlich nicht, denn event ist bis zu neunmal das gleiche, genau wie datum und das Feld "von". Der einzige Unterschied ist dann im Feld "an", allerdings nicht bei einem anderen event, da wiederholen sich die Zeilen.

        Dass du einen Index über mehrere Spalten anlegen kannst, weißt du? Wenn nicht, dann weißt du es jetzt.

        Das Finden von doppelten Datensätzen ist kein Problem, auf das du als erster gestoßen bist. Insofern wundert es mich, dass du diese Frage nochmal neu stellst, anstatt sie zuerst im Archiv zu recherchieren und dann erst offen gebliebene Fragen stellst.

        echo "$verabschiedung $name";