sql Duplikate finden und entfernen
xpfreund
- datenbank
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
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
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
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
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
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
Hallo,
Dein Beispiel war:
von | an | event | note | datum
1 | 7 | Neujahr | Feiertag | 2007-01-01
1 | 9 | Neujahr | Feiertag | 2007-01-01Ist 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
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";