SQL-Update mit Schleife - wie am besten?

Schnipp

Lt. Commander
Registriert
Feb. 2004
Beiträge
1.141
Tach zusammen,

arbeite mich gerade in SQL ein und finde aktuell keinen Ansatz für folgende Aufgabenstellung:

Ich habe zwei Tabellen (A und B). In Tabelle A laufen regelmäßig von außen neue Datensätze rein. Tabelle B habe ich selbst erstell und diese befülle ich mit einem Teil der Daten, die in A reinlaufen (brauche nicht alle Spalten aus A auch in B).

Nun habe ich festgestellt, dass einige Spalteninhalte in Tabelle B unvollständig sind, der Inhalt wurde dort aufgrund eines Formatfehlers abgeschnitten. Ich möchte nun ab einer best. ID diese Inhalte in Tabelle B über einen Update-Befehl aus A aktualisieren.

Dafür benötige ich ja eine Schleife. Aber ich finde keinen Ansatz für das SQL-Statement dazu. Es handelt sich auch um 2 DB auf 2 Servern, die angesprochen werden.

Ich weiß ja nicht, ob mir jemand einen Ansatz vermitteln kann. Bin wie gesagt absoluter Neuling in Sachen SQL.

Gruß Schnipp
 
update, join-verknüpfung beider tabellen, konditionierung des update sollte reichen
http://www.w3schools.com/sql/sql_update.asp
[tabellen = A,B]
Code:
update A, B set B.columnBroken = A.columnBroken where B.columnBroken = "wert" and B.id>9001 and A.id = B.id

Alternativ Tabelle B selecten nach den Werten die nicht ausgefüllt wurden, in normaler Programmiersprache die IDs auslesen, nach IDs in Tabelle A selecten und entsprechend Werte von Tabelle A übernehmen. Mit reinem SQL wird das (glaube ich) nichts wenn man 2 verschiedene Datenbanken hat.
 
Zuletzt bearbeitet:
Das folgende Statement schreibt alle Werte von Spalte1 aus Tabelle A nach B. Die gewuenschten Ids einfach in die Liste in der AND Anweisung eintragen. Wenn man den AND Teil weglaesst werden alle Daten abgeglichen.

Code:
UPDATE TabelleA, TabelleB
SET TabelleB.Spalte1 = TabelleA.Spalte1
WHERE TabelleA.Id = TabelleB.Id
AND TabelleA.Id IN (1,5,6,10);
 
@r15ch13: Das klingt doch relativ einfach und logisch.

Könnte ich auch die AND-Anweisung so gestalten, dass ich ihm sage:

ID > Wert x ??
 
Warum muss man am Anfang des UPDATE-Befehls beide Tabellen angeben? Aktualisiert werden soll ja nur Tabelle A ...
 
Zurück
Oben