![]() |
oracle: Update und join?
Hallo,
ich habe eine Tabelle, in der ich bei den Feldern, die eine gewisse Bedingung erfüllen den Wert aus einer anderen Tabelle eintragen soll. In hätte das so gemacht: UPDATE tabelle1 a, tabelle2 b SET a.feld = b.feld WHERE a.id = b.id and a.bedingungsefeld = 1; Jetzt habe ich per Internet schon mal herausgefunden, dass dies mit Oracle nicht geht, aber wie kann ich dort so etwas lösen? Vielen Dank im Voraus für eure Hilfe und schöne Grüße Nestrus |
ich häts so gemacht
update tabelle1 set feld =(select feld from tabelle2 where tabelle1.id=tabelle2.id) where bedingungsefeld=1; |
Na klar, mit 'nem subselect.
Mir war gar nicht bewusst, das ich im subselect auch felder der übergeordneten abfrage verwenden kann. (Mein SQL ist wohl eingerosteter, als ich dachte.) Wunderbar, ich hab nämlich auch gerade das Problem gehabt, dass update tabelle1 set feld = (select zahl2 from tabell2)*zahl1; nicht geht, aber jetzt weiß ich dass es einfach update tabelle1 set feld = (select zahl2*zahl1 from tabelle2); heißt. Danke! |
Wenn ich schon am fragen bin, gibt es eine lösung für:
update tabelle set (feld1, feld 2)= ((select feld3 from tabelle2 where bedingung = 1), (select feld3 from tabelle2 where bedingung = 2)); Oder geht dass nur mit zwei updates? |
versuch mal
update tabelle set feld1=(select feld3 from tabelle2 where bedingung = 1), feld2=(select feld3 from tabelle2 where bedingung = 2); |
Oh klar, danke.
Hat zwar ziemlich lange gedauert (38s für nur 33.482 Zeilen) aber es funktioniert. Ich bin wohl nur ein paar Dinge etwas anders gewohnt, als man es bei Oracle schriebt. |
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag