14 Ocak 2014 Salı

Oracle JOIN ile UPDATE işlemi

Bir tabloda Update etmek istediğimiz alanın değerinin başka bir tablodan gelmesi gerekiyorsa, bunu alt sorgularla yapıyoruz.

update tablo1
set son_guncelleme_tarihi =
(
  select max(guncelleme_tarihi)
  from tablo2 where tablo1.kayit_no=tablo2.kayit_no
)

Peki birden çok alanın update edilmesi gerektiği durumlarda ne yapacağız? Her biri için birer alt sorgu yazmak yerine MERGE kullanımı daha yerinde olacaktır.


MERGE INTO TABLO1 T1
USING
(
  SELECT 
  TAB1.ROWID AS RID,
  TAB2.GUNCELLENECEK_SUTUN1 AS GUNC1,
  TAB2.GUNCELLENECEK_SUTUN2 AS GUNC2,
  TAB2.GUNCELLENECEK_SUTUNX AS GUNCX
  FROM TABLO2 TAB2, TABLO1 TAB1
  WHERE TAB1.PK_SUTUN=TAB2.PK_SUTUN
) T2
ON(T1.ROWID=T2.RID)
WHEN MATCHED THEN UPDATE
SET
  T1.GUNCELLENECEK_SUTUN1=T2.GUNC1,
  T1.GUNCELLENECEK_SUTUN2=T2.GUNC2,
  T1.GUNCELLENECEK_SUTUNX=T2.GUNCX

Hiç yorum yok:

Yorum Gönder