Beagol Geschrieben 13. Mai 2003 Teilen Geschrieben 13. Mai 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fireworker Geschrieben 13. Mai 2003 Teilen Geschrieben 13. Mai 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Beagol Geschrieben 13. Mai 2003 Autor Teilen Geschrieben 13. Mai 2003 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Darth_Zeus Geschrieben 13. Mai 2003 Teilen Geschrieben 13. Mai 2003 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........ ausserdem hört es sich so an, als ob er Tabelle2 nicht kennt. Schreibfehler?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Beagol Geschrieben 13. Mai 2003 Autor Teilen Geschrieben 13. Mai 2003 Original geschrieben von Darth_Zeus probiers mit set Tabelle1.Spalte1 = Tabelle2.SpalteA where Tabelle2.SpalteA ='AC' manchmal reagieren DBs ein bisserl blö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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
HolzOnkel Geschrieben 13. Mai 2003 Teilen Geschrieben 13. Mai 2003 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Beagol Geschrieben 13. Mai 2003 Autor Teilen Geschrieben 13. Mai 2003 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! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Panther Geschrieben 14. Mai 2003 Teilen Geschrieben 14. Mai 2003 es müsste auch mit einem Update tabelle1, tabelle2 Set tabelle1.spalte1=tabelle2spaltex ..... usw where tabellex.spaltez='AC' gehen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.