WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   oracle: Update und join? (http://www.wcm.at/forum/showthread.php?t=216808)

Nestrus 31.05.2007 13:27

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

opa12 31.05.2007 15:47

ich häts so gemacht

update tabelle1 set feld =(select feld from tabelle2 where tabelle1.id=tabelle2.id) where bedingungsefeld=1;

Nestrus 01.06.2007 11:27

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!

Nestrus 01.06.2007 11:44

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?

opa12 01.06.2007 12:58

versuch mal

update tabelle set
feld1=(select feld3 from tabelle2 where bedingung = 1),
feld2=(select feld3 from tabelle2 where bedingung = 2);

Nestrus 01.06.2007 14:10

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