Oracle: Update einer Tabelle mit Bedingungen aus einem Select

Mr_Tom

Grünschnabel
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
 
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!
 
Zuletzt bearbeitet:
Hi Mr_Tom,

versuche mal folgendes:

SQL:
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
 

Neue Beiträge

Zurück