Update mit Select verbinden?

sqlnoob

Neuer Benutzer
Beiträge
3
Ich muss hier ein Update auf eine Tabelle machen, die Daten kommen aus drei anderen Tabellen - wie geht das genau?

UPDATE zieltabelle
SET feld = (Ergebnis von einem SELECT über drei Abfragetabellen)

Den Select über die drei Tabellen habe ich, der funktioniert.
Gejoined werden kann über eine id die sowohl in der Zieltabelle vorhanden ist wie in einer der drei Abfragetabellen.

Hilfe.... :confused:
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.702
Code:
UPDATE    zieltabelle
SET        zielwert = (    SELECT    q.quellwert
                        FROM    quelltabelle q
                        WHERE    q.id = zieltabelle.id )
Wichtig ist das man die Tabelle im Update-Statement nicht mit einem Alias belegen kann, im Select aber sehr wohl. Sind also beide Tabellen die selben muss man im Select ein einen Alias für den Tabellennamen vergeben.
 

sqlnoob

Neuer Benutzer
Beiträge
3
Nur eine Sorge hab ich noch: @ukulele

werden wirklich nur Datensätze geändert, die auch in dem Select drin sind? Das sind nämlich nur ein paar hundert die im Ergebnis vom Select drin stehen, in der Tabelle sind aber ein paar Millionen Datensätze drin und die will ich bei gott nicht verändern!
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.702
werden wirklich nur Datensätze geändert, die auch in dem Select drin sind?
Nein. Um Daten auszuschließen solltest bzw. musst du die WHERE Bedingung benutzen. Auch da kann man einen Subselect verwenden falls er denn nötig ist. Ohne WHERE Bedingung aktualisierst du definitiv die ganze Tabelle.

Dieser kann in der WHERE Bedingung auch mehrere Werte beinhalten z.B. mit
Code:
WHERE id IN ( SELECT id FROM tabelle )
Wenn du aber eine Spalte = ( SELECT wert... setzt, darf dieser Subselect pro Eintrag immer nur ein Ergebnis liefern.
 
Oben