MSSQL: Doppelte Datensätze ändern

Aurtex

Grünschnabel
Hallo zusammen,
es geht um folgendes: ich habe eine Datenbank mit >11000 Einträgen. Ich habe versucht per Trigger Doppelte Einträge zu verhindern
(http://www.tutorials.de/relationale...l-trigger-funktioniert-nicht-wie-er-soll.html). Da ich mir hierbei nicht sonderlich weiterhelfen konnte versuche ich dies nun über einen UNIQUE Key über 3 Spalten der Tabelle: Projekte_Listen, Nummer, Sortierung.

Ich habe also 3 wichtige Tabellen: Projekte_Listen (Fremschlüssel zur Zuordnung der Aufgaben zu einem Projekt z.B. 18), Nummer (Laufnummer der Aufgabe z.B. 4.1) und Sortierung (Im Prinzip die Laufnummer nur mit vorangehenden Nullen bspw.: 004.001)

Da nun aber bereits Doppelte Einträge in der Datenbank vorhanden sind (und ich nicht die Lust habe >2000 Duplikate manuell zu bearbeiten. Die Zahl entstammt einer COUNT Abfrage um herauszufinden wie viele doppelte Einträge es gibt) suche ich nach einer Art Script, mit welchem ich die doppelten Einträge ändern (nicht löschen) kann. Google spuckt leider nur Ergebnisse zum Löschen aus, selbst wenn man ändern eingibt.

Die Änderung soll folgendermaßen aussehen: Jedem Duplikat soll bei der Sortierungsnummer noch ein .001 bzw. .002 angehangen werden. Die Laufnummer soll davon unberührt bleiben.

Habt Ihr eine Idee?

Grüße,
Aurtex
 
hallo,

du kannst ja anhand der Laufnummer die doppelten Einträge ermitteln. z.bsp. ist die 004.001 dreimal vorhanden. Nun kannst du diese 3 durchlaufen und eine fortlaufende nummer durch update dranhängen.

Gruß, Kalito
 
Einfach herausfinden, welche mehrfach existieren ist leicht :

Code:
SELECT x1.doppelterKey
   FROM Foobar x1
  INNER JOIN Foobar x2
       ON x1.doppelterKey = x2.doppelterKey
GROUP BY x1.doppelterKey
HAVING COUNT(*) > 1

darüber kannst Du ja schleifen und ein Update machen. 11K Datensätze sind nun nicht unbedingt so viel, dass das alles aufm Server mit nem Single-Shot-Update laufen muss, obwohl ich mir sicher bin, dass es geht.

Grüße,
gore
 
Zurück