Tobe Geschrieben 24. Februar 2006 Geschrieben 24. Februar 2006 Hallo, ich hab 2 Tabellen und in die eine soll ein update gemacht werden auf die andere aber nur auf die datensätze wie in der anderen tabelle ist. so ungefähr nur das es so nicht geht.... update [tabelle1] set feld2 = [tabelle2.feld2] where [tabelle1.feld1] = [tabelle2.feld1]; also in der tabelle1 sind mehrere datensätze... und ich will nur paar davon ändern und die änderung die ist auf der anderen tabelle und die will ich jetzt einfach in die andere tabelle so zu sagen aktualisieren... das aber nur die bestimmten felder die im feld1 den gleichen namen haben aber die anderen felder feld2 unteschiedlich sind... war des irgendwie zu kompliziert beschrieben? ich such halt die syntax... das er halt net per update alle datensätze ändert sonder nur die mit dem gleichen namen im feld1
SchwarzerEngel Geschrieben 24. Februar 2006 Geschrieben 24. Februar 2006 Hi Tobe ! Ich suche auch schon eine Weile nach einer derartigen Lösung. Leider muß ich dir sagen, dass es (meiner Meinung nach und auch nach Norbert Denne *g*) "keine Möglichkeit gibt, Daten über mehrere Tabellen hinweg zu verändern" ! Das heißt, du kannst beim "SET" nicht auf Felder anderer Tabellen referenzieren. Ich verstehe auch nicht wirklich, warum das nicht gehen soll... Habe schon unzählige Male herumexperimentiert mit diversen Views, Subselect oder Joins solche Updates zu bewerkstelligen...bin aber leider kläglich gescheitert. Vielleicht gibt´s hier ja wirklich jemanden, der ne Lösung kennt! Ich wär auch überaus dankbar dafür... In diesem Sinne... Greetz, S.E.
Tobe Geschrieben 24. Februar 2006 Autor Geschrieben 24. Februar 2006 hehe... juhu ich bin net alleine der des Problem schon hatte
SchwarzerEngel Geschrieben 24. Februar 2006 Geschrieben 24. Februar 2006 Ahoi nochmal... Natürlich GIBT es eine Lösung für diese Art Problem! Ich bin vorhin davon ausgegangen, dass du die Alternative natürlich kennst, aber als ich mir deinen Post nochmals durchgelesen habe war ich mir da nicht mehr ganz so sicher... Also, auf die Gefahr hin, dass ich dir Zeug erzähle, das du ohnehin bereits weißt: Ich hab für diese Sache immer ein kleines Hilfsprogramm. Darin befindet sich ein Cursor, der die benötigte WHERE-Klausel enthält und mir das Feld zurückliefert, das ich in der anderen Tabelle updaten möchte. In ner Schleife wird dann per Fetch der Cursor abgearbeitet und jeweils der Update auf die andere Tabelle mit dem entsprechenden Feld durchgeführt. So mach ich das zumindest immer! Wahrscheinlich gibt´s (wie fast immer) ne komfortablere Lösung, aber immerhin funktioniert´s ! Naja, vielleicht rückt ja doch noch jemand nen passenden SQL raus... -> dann kann ich mein Hilfsprogramm ins Nirvana schicken ! :cool: Greetz S.E.
Tobe Geschrieben 24. Februar 2006 Autor Geschrieben 24. Februar 2006 kannst mir vllt mal des hilfsprogramm schicken?!
SchwarzerEngel Geschrieben 24. Februar 2006 Geschrieben 24. Februar 2006 PM ist unterwegs... (hoff ich zumindest )
Tobe Geschrieben 24. Februar 2006 Autor Geschrieben 24. Februar 2006 habs auch so gemacht... als erstes ne lösch abfrage und danach dann einfach insert
Jasper Geschrieben 24. Februar 2006 Geschrieben 24. Februar 2006 update [tabelle1] set feld2 = [tabelle2.feld2] where [tabelle1.feld1] = [tabelle2.feld1]; ich habe deine erklärung nicht ganz verstanden, aber anhand des statements oben denke ich mal, du suchst das hier: update tabelle1 t1 set feld2 = (select t2.feld2 from tabelle2 t2 where t1.feld1 = t2.feld1); -j
SchwarzerEngel Geschrieben 8. März 2006 Geschrieben 8. März 2006 ich habe deine erklärung nicht ganz verstanden, aber anhand des statements oben denke ich mal, du suchst das hier: update tabelle1 t1 set feld2 = (select t2.feld2 from tabelle2 t2 where t1.feld1 = t2.feld1); -j Hi Jasper ! Funktioniert das bei dir tatsächlich !? Mit DB2 habe ich mit dem Sub-Select in der SET-Anweisung kein Chance... Hast du das ausprobiert ? FUNKTIONIERT das tatsächlich so ? Ich meine...die Syntax an sich liegt natürlich auf der Hand, aber funktionieren tut das bei mir so leider nicht ! Na egal... Ich benutz halt denn doch weiterhin mein Prog ! Grüßle S.E.
Jasper Geschrieben 8. März 2006 Geschrieben 8. März 2006 mit Oracle kein Problem: SQL> select * from tabelle1; FELD1 FELD2 ---------- ---------- 1 1 SQL> select * from tabelle2; FELD1 FELD2 ---------- ---------- 1 2 SQL> update tabelle1 t1 set feld2 = (select t2.feld2 from tabelle2 t2 where t1.feld1 = t2.feld1); 1 row updated. SQL> select * from tabelle1; FELD1 FELD2 ---------- ---------- 1 2 wundert mich ehrlich, dass das mit DB2 nicht geht. -j
kills Geschrieben 8. März 2006 Geschrieben 8. März 2006 Welches DBMS? PS: Mysql < 4.1 unterstützt keine Subselects..
Empfohlene Beiträge
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 erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden