toplu bir update olayım var ama bir türlü yapamadım...
senaryo şöyle;
A adında bir Tablom var ...
P_SICIL INTEGER,
MAAS DOUBLE PRECISION; alanım var
PRIM adında bir tane daha table var...
Alanları şöyle...
Kod: Tümünü seç
P_NO INTEGER,
P_SICIL INTEGER,
P_GUN VARCHAR(2),
P_AY VARCHAR(2),
P_YIL VARCHAR(4),
P_ODEME DOUBLE PRECISION,
A Table ;
Kod: Tümünü seç
P_SICIL MAAS
------------ -----------------
1 1000
2 1000
3 1200
4 1100
... ....
... ....
Kod: Tümünü seç
P_NO P_SICIL P_GUN P_AY P_YIL P_ODEME
-------- ------------ ---------- ------- ------- -----------
1 1 01 01 2004 500
2 1 10 01 2004 500
3 2 10 01 2004 200
4 3 10 01 2004 300
5 4 20 01 2004 500
A table daki MAAS + SUM'dan gelen değer ile arttırmak istiyorum...yani update ettiğim zaman A tablosu aşağıdaki gibi olacak..
A Table ;
Kod: Tümünü seç
P_SICIL MAAS
-----------------------------
1 2000
2 1200
3 1500
4 1600
... ....
... ....
ama kullanıcı bunu yaparken şöyle birşey istiyor ;
1 nolu sicilden 2 nolu sicile kadar yap.. yani between olayı var..(işte işler burda karışıyor..)..
1 den 2 kadar olan sicil aralığını yap dediğimde PRIM tablosuna gidecek ve verilen sicil aralığına bakacak vede verilen ay yıl'a
göre bir group yapıp P_ODEME alanı SUM ederek A tablosundaki maas alanı + SUM kadar arttıracak...
ben şöyle birşeyler çıkardım ama multi rows gibi bir hata veriyor...
Kod: Tümünü seç
update A set
A.MAAS =A.MAAS +(select sum(pr.P_ODEME) from PRIM pr where pr.P_SICIL between :ilk_sicil and :son_sicil group by pr.P_SICIL)
where A.PSICIL between :ilk_sicil and :son_sicil;
acaba bu toplu update işini nasıl çözebilirim... teşşekkürler..