Zum Inhalt springen

update mehrer Zeilen aus einer Tabelle


Beagol

Empfohlene Beiträge

Hallo,

ich möchte unter SQL Server 2000 ein Update aus einer Tabelle in die andere unter einer bestimmten Bedingung hinbekommen.

Es sollte so ähnlich ausehen:


udate Tabelle1

set (Spalte1, Spalte2, Spalte3, Splate4) =

(select SpalteA, SpalteB, SpalteC, SplateD from Tabelle2)

where Tabelle2.Spalte1 = 'AC'

Die Syntax funktioniert so nicht unter SQL Server.

Nochmal zum Verständniss:

Es sollen alle Zeilen, die in Tabelle2 stehen und Spalte1 ein AC stehen haben in Tabelle1 upgedatet werden. In den Tabellen stehen nahezu identische Werte.

Hat jemand eine Idee, wie man das hinbekommen könnte?

Auch ruhig via T-SQL.

Danke und Gruss

Dietmar

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Beagol+Sollum


udate Tabelle1

set (Spalte1, Spalte2, Spalte3, Splate4) =

(select SpalteA, SpalteB, SpalteC, SplateD from Tabelle2)

where Tabelle2.Spalte1 = 'AC'

Die Syntax funktioniert so nicht unter SQL Server.
Du mußt für jede Spalte die dazugehörige Spalte der anderen Tabelle setzen:
update Tabelle1 set spalte1=Tabelle2.spalteA, spalte2=Tabelle2.spalteB, usw

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von fireworker

Du mußt für jede Spalte die dazugehörige Spalte der anderen Tabelle setzen:

update Tabelle1 set spalte1=Tabelle2.spalteA, spalte2=Tabelle2.spalteB, usw
Also

update Tabelle1 

set spalte1 = Tabelle2.SpalteA where Tabelle2.SpalteA ='AC'

klappt nicht.

Die Meldung:

Das Spaltenpräfix 'Tabelle2' stimmt mit keinem in der Abfrage verwendeten Tabellen- oder Aliasnamen überein.

Was tun?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Darth_Zeus

probiers mit

set Tabelle1.Spalte1 = Tabelle2.SpalteA where Tabelle2.SpalteA ='AC'

manchmal reagieren DBs ein bisserl blöd........ :D

ausserdem hört es sich so an, als ob er Tabelle2 nicht kennt. Schreibfehler??

Schom probiert.

Geht nicht.

Schreibfehler kann nicht sein. Ich habs im QA rüberkopiert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Versuch es mal mit:

UPDATE Tabelle1

SET feld1 = Tabelle2.feld1, feld2 = tabelle2.feld2, ...

FROM Tabelle1 INNER JOIN Tabelle2

ON Tabelle1.wasauchimmer = Tabelle2.wasauchimmer

WHERE Tabelle2.bedingungsfeld = 'XYZ'

Wenn Du keine Verknüpfung zwischen den beiden Tabellen herstellst, kann der Server auch nicht wissen, von welcher Tabelle2 Du da gerade redest...

;)

Gruss,

der Onkel

PS: Dieses Konstrukt funzt auch, wenn Du Tabelle2 als Untermenge definierst, also den INNER JOIN so machst:

UPDATE Tabelle1

SET feld1 = tmp.feld1, feld2 = tmp.feld2, ...

FROM Tabelle1 INNER JOIN

(SELECT wasauchimmer, feld1, feld2, feld3, ... FROM Tabelle2

WHERE Tabelle2.bedingungsfeld = 'XYZ') AS tmp

ON Tabelle1.wasauchimmer = tmp.wasauchimmer

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...