Ich muss in mehreren Datenbanken Personalnummern ändern bzw. durch neue Personalnummern ersetzen. Hat von euch jemand eine Idee wie man das am einfachsten macht? Ich bin in SQL leider nicht sehr sattelfest.
Ich werde in der Datenbank wo die die Tabbelen geändert werden sollen eine weitere Tabelle mit 2 Spalten hinzufügen. In der einen Spalte steht die alte, in der anderen Spalte die neue Personalnummer.
Wie kann ich jetzt die einzelnen Felder (alle oder gezielte) durchlaufen und nachschauen ob in dem aktuellen Feld eine der alten Personalnummern enthalten ist, und wenn das so ist diese direkt durch die neue ersetzen.
Ich weiss das ich das mit:
update temp set persnr = replace(persnr, ‚alte Personalnummer‘,‚neue Personalnummer‘)
die Personalnummer tauschen kann. Nur habe ich nicht vor jede Personalnummer als String einzutragen (zu Viele). Besteht irgendwie die möglichkeit in der replace-syntax statt des Strings einen Verweis auf die hinzugefügte Tabelle mit der alten und der neuen Personalnummer vorzunehmen. Und dann jedesmal die komplette Tabelle zu durchlaufen?
Vielleicht habt Ihr aber auch einen ganz anderen, einfacheren Lösungsansatz. Bin dankbar für alle Vorschläge.
Ich muss in mehreren Datenbanken Personalnummern ändern bzw.
durch neue Personalnummern ersetzen. Hat von euch jemand eine
Idee wie man das am einfachsten macht? Ich bin in SQL leider
nicht sehr sattelfest.
je nach dem wie die Logik der Aenderung aussieht wuerde ich vorschlagen das Ganze in ein kleines VB oder VBA Script zu verpacken.
Am einfachsten in einer Access-DB die entsprechenden Tabellen als Verknuepfung anlegen und dann mittels einer Function die Aenderungen durchfuehren.
Tschau
Peter
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Ich kann jetzt nicht sagen, ob das auch am SQL Server funktioniert, aber ich würde normalerweise ein
UPDATE tabelle\_x
SET persnr = (select neue\_persnr from tabelle\_y where alte\_persnr=persnr);
durchführen.
Was sicher am SQL-Server funktioniert (beim obigen Beispiel bin ich mir aufgrund des Sub-Selects unsicher), wäre eine Prozedur/Funktion einzubauen, in der ein Cursor eine der beiden Tabellen durchläuft und
und dann den neuen Wert aus der Hilfstabelle rausselektiert und die die Ursprungstabelle einträgt.
Verbal ausgedrückt:
Möglichkeit 1)
1. Cursor C1 auf tabelle\_y
2. Update auf tabelle\_x mit C1.neue\_persnr, wo persnr=C1.alte\_persnr
Möglichkeit 2) (falls es hier am SQL-Server keine Probleme gibt, daß eine Tabelle eines geraden durchlaufenden Cursors upgedatet wird)
1. Cursor C1 auf tabelle\_x
2. Selektion der neuen Persnr aus tabelle\_y mittels C1.persnr
3. Update auf tabelle\_x
Ich hoffe, ich habe das Problem richtig verstanden …