# Oracle: Update einer Tabelle mit Bedingungen aus einem Select



## Mr_Tom (21. November 2007)

Hallo zusammen

ich möchte ein Feld einer Tabelle ändern, und zwar mit den Bedingungen eines Selects.

Tabelle: tbtcp
Feld: sdluname
Bedingung zum update:
select count(*) from tbtco o, tbtcp p where o.jobcount=p.jobcount and o.status ='S';
--> 3

select count(*) from tbtco o, tbtcp p where o.jobcount=p.jobcount;
--> 185

Ich möchte nur bei den 3 rows den einen Wert in der Tabelle tbtcp ändern.

Versuch:
update tbtcp
  set sdluname='SAP_BATCH_BC'
  where exists (select p.sdluname from tbtco o, tbtcp p 
  where o.jobcount=p.jobcount and o.status ='S');

130 rows updated.

Leider nicht das gewünschte Resultat.

Hat jemand von euch ein Idee...

Gruss, Mr_Tom


----------



## marbe (21. November 2007)

Hallo,

ach wie nett mal eine Frage aus SAP zu sehen  Mal eine Grundsätzliche Frage, änderst Du direkt auf der Datenbank in vom SAP? Die Jobs werden doch direkt im R/3 verwaltet. Vorsicht hier!

Zu deiner Frage:

Wenn ich das richtig verstanden habe willst Du in der Tabelle TBTCP das Feld sdluname ändern. (Nehme mal an der USER im Job ist Falsch) aber wie soll die Bedigung gemeint sein?

Du möchtest in der Tabelle TBCO eine Bedingung erfüllt ist?

Gruß

PS: Wenn Du Probleme mit Daten in SAP hast sprich mich ruhig PN an mache das professionell!


----------



## Sparks (21. November 2007)

Hi Mr_Tom,

versuche mal folgendes:


```
update tbtcp p 
set p.sdluname='SAP_BATCH_BC'
where p.jobcount in  
   (select o.jobcount from tbtco o 
   where o.jobcount=p.jobcount and o.status ='S');
```
Das klappt in DB2. 

Die Bedingung im Subselect "o.jobcount=p.jobcount" ist zwar nicht zwingend erforderlich, wird aber bei großen Datenmengen die Sache erheblich beschleunigen.

Gruß, Sparks


----------

