Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben
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

Geschrieben
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?

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

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

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

Geschrieben

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

Geschrieben
Original geschrieben von HolzOnkel

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

Ja neee is klar!

Heute Montag ??? :confused:

Danke dir!

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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