SQL Abfrage über zwei Tabellen - Ergebnis in eine

Guten Abend,

aufgrund einer Fusion muss ich nun zwei Mitgliedstabellen „zusammenfügen“.

Tabelle A enthält schon bereits alle Mitglieder, auch die Mitglieder der „geschluckten“ Firma. Allerdings findet man diese Mitglieder nur noch mit der neuen Mitgliedsnummer. Sprich, die Tabelle ist einfach nur erweitert worden.
Zusätzlich ist auch schon die Spalte „Mitgliedsnummer_alt“ enthalten, allerdings noch leer.
Aufbau Tabelle A:
Mitgliedsnummer | Mitgliedsnummer_alt | Name | Vorname | PLZ | …

Tabelle B ist aus einem Unload erstellt worden der statische Daten enthält, die nicht mehr erweitert werden.
Hier findet man die neue und alte Mitgliedsnummer der Mitglieder.
Aufbau Tabelle B:
Mitgliedsnummer | Mitgliedsnummer_neu | Name | Vorname | …

Nun mein Problem:
Alle Mitglieder die bei der alten Firma waren, solllen in Tabelle A zusätzlich in der Spalte „Mitgliedsnummer_alt“ ihre alte Mitgliedsnummer erhalten.
Mitglieder die in der aufnehmenden Firma waren, haben ja nur eine Mitgliedsnummer und sollen deshalb in der Spalte „Mitgliedsnummer_alt“ NULL stehen haben.

Leider kann ich Tabelle B nicht zu Tabelle A machen, da Tabelle A zyklisch upgedatet wird. Die Daten müssen also in Tabelle A rein, obwohl Tabelle B eigentlich schon meinen Anforderungen entspricht.
Wie löse ich das am Besten in SQL?

Hallo Daniel,

Du schreibst nicht welche Datenbank Du benutzt, aber was hälst Du von einem INSERT … Tabelle_A AS SELECT … FROM Tabelle_B mit kreuzweiser Zuordnung von Tabelle_A.Mitgliedsnr=Tabelle_b.Mitgliedsnr_neu und Tabelle_A.Mitgliedsnr_alt=Tabelle_b.Mitgliedsnr oder sollte ich da etwas missverstanden haben (was die Bedeutung der Nummern angeht)?

MfG Georg V.

Morgen Georg,

also es handelt sich dabei um eine MsSQL-DB.

Du hast das genau richtig verstanden, schiebt dein Skript dann auch die alte Mitgliedsnummer in Tabelle A ein, wenn ein Mitglied so eine Nummer hat?

Gruß,

Daniel

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

Moin, Daniel,

Beziehung von A.MA nach B.MA_neu aufbauen und dann

 UPDATE A INNER JOIN B ON A.MA=B.MA\_neu 
 SET MA\_alt = B.MA;

Gruß Ralf