SQL Datenbankänderung

Hallo zusammen,

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.

Gruß

Mr.Blond

Hallo an das neue Mitglied.

http://mitglied.lycos.de/schachspielen/welcome.gif :wink:

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.

Es könnte hilfreich sein, den Namen und die Version der verwendeten
Datenbank zu schreiben, z.B. Oracle 10g, MaxDB 7.5 + SAP WAS 6.40 RC1,…
Immerhin verwendet jeder Hersteller seinen eigenen SQL-Dialekt.
Noch drei linktipps: http://www.entwickler-forum.de -> Datenbanken
& http://www.datenbank-spektrum.de
& http://www.jmen-web.de/db/index.html

HTH
mfg M.L.

Hallo,
Es handelt sich um eine MS SQL Datenbank auf nem 2000er SQL Server.

Gruß

Mr.Blond

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

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]

Hi!

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 …

Grüße,
Tomh