Zum Inhalt springen

Update inkl Abfrage


DeadNovum

Empfohlene Beiträge

Hallo,

schaut euch mal folgenden Befehl an (der müsste funktionieren, konnte ihn aber noch nicht testen)

UPDATE tabelle1 t1 set t1.Spalte1 = (SELECT t2.spaltePK FROM tabelle2 t2 where t2.Spalte2 IN (SELECT T1.Spalte2 FROM tabelle1));

Möchte also in Abhängigkeit von Tabelle 2 und Tabelle 1 ein Feld der Tabelle 1 füllen.

Rein theoretisch ist es möglich, dass beim ersten Select-Statment mehr als ein Zeile zurückgegeben wird, was nicht erwünscht ist. Es gäbe noch ein zweites Auswahlkritärium, was den DAtensatz wirklich eindeutig machen würde.

würde dies dann so gehen:

UPDATE tabelle1 t1 set t1.Spalte1 =

(SELECT t2.spaltePK FROM tabelle2 t2

WHERE t2.Spalte1 IN (SELECT Spalte2 FROM tabelle1)

AND t2.spalte2 = t1.spalte3);

Link zu diesem Kommentar
Auf anderen Seiten teilen

(meine Syntaktisch. logisch müsste es so funktionieren)

SQL != DBMS. Ob der Syntax korrekt ist, wird Dir schon das DBMS sagen, aber in beiden Statements können immer mehrere Rows selektiert werden.

Aber wo ist denn das Problem: Der Syntax wird durch das DBMS geprüft, die Semantik dadurch, dass Du stichprobenartig die Ausgabe prüfst und da Du - hoffe ich - die Migration erst testest, sehe ich nicht das Problem

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hmm ich tipp mal auf Oracle, zumindest die Syntax würde passen.

Was du machen möchtest nennt sich korrelierte Unterabfrage (oder correlated subquery).

Dafür brauchst aber kein zusätzliches SELECT, das geht so:

UPDATE tabelle1 t1 set t1.Spalte1 =

  (SELECT t2.spaltePK FROM tabelle2 t2

  WHERE t2.Spalte1 =t1.spalte3);

Damit werden alle zusammengehörigen Sätze upgedatet (vorausgesetzt t2.spalte2 und t1.spalte3 ergeben immer maximal einen Satz als Ergebnis). Nicht gefundene Sätze werden auf NULL gesetzt, da Du keine WHERE Bedingung im Update Statement selbst hast.

Dim

Bearbeitet von dr.dimitri
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...