Tobe Geschrieben 24. Februar 2006 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SchwarzerEngel Geschrieben 24. Februar 2006 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Tobe Geschrieben 24. Februar 2006 Autor Teilen Geschrieben 24. Februar 2006 hehe... juhu ich bin net alleine der des Problem schon hatte Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SchwarzerEngel Geschrieben 24. Februar 2006 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Tobe Geschrieben 24. Februar 2006 Autor Teilen Geschrieben 24. Februar 2006 kannst mir vllt mal des hilfsprogramm schicken?! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SchwarzerEngel Geschrieben 24. Februar 2006 Teilen Geschrieben 24. Februar 2006 PM ist unterwegs... (hoff ich zumindest ) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Tobe Geschrieben 24. Februar 2006 Autor Teilen Geschrieben 24. Februar 2006 habs auch so gemacht... als erstes ne lösch abfrage und danach dann einfach insert Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jasper Geschrieben 24. Februar 2006 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SchwarzerEngel Geschrieben 8. März 2006 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jasper Geschrieben 8. März 2006 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 8. März 2006 Teilen Geschrieben 8. März 2006 Welches DBMS? PS: Mysql < 4.1 unterstützt keine Subselects.. 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.