UPDATE WITH INNER JOIN

Bazen veritabanımızdaki bir tablomuzu, başka bir tablomuzda bulunan veri ile update etmek isteyebiliriz.

Bu durumda güncellemek için kullanılacak veri static değildir. Güncel veri kayıt bazında değişiklik gösterdiği ve başka bir tabloda yer aldığı için UPDATE t-sql'ini alışık olduğumuzdan daha farklı yazmamız gerekecektir.

Basit bir örnekle anlatmak gerekirse veritabanımızda [Kullanici] ve [Iletisim] adlarında kullanıcı bilgilerini ve iletişim bilgilerini tuttuğumuz iki tablomuz olsun.

Iletisim bilgilerinin yer aldığı tabloda Email bilgisini aldığımızı fakat Kullanici tablosunda bu bilginin basit bir bug dan ötürü NULL kaldığını düşünelim. Bug'u farkettik, gerekli güncellemeyi yaptık fakat biz güncellemeyi yapana kadar oluşan bir milyon kayıt veritabanında Email alanı NULL olarak duruyor :)

"İş işten geçti hocam bu saatten sonra oluşacak kayıtlar dolu olsun artık ne yapalım :)" demektense [AdSoyad] ve [TelefonNo] bilgisinin eşleştiği kayıtların email adreside aynıdır düşüncesi ile aşağıdaki UPDATE sorgusunu yazıp EXECUTE etmek işimizi görecektir..

Not: Senaryo itibari ile olmasada benim çok kullandığım ve herkeze bu tür durumlarda kullanmasını tavsiye ettiğim bir T-SQL kullanımıdır UPDATE FROM.
Birgün sizinde işinize yaraması dileği ile..  

UPDATE Kullanici
SET    Email = i.Email
FROM   Kullanici k
JOIN   Iletisim  i ON  k.AdSoyad   = i.AdSoyad 
                   AND
k.TelefonNo = i.TelefonNo
2 yorum listeleniyor...
İsim Yok 05.08.2014 00:03
hocam elinize yüreğinize sağlık inanın hayat kurtardınız :)
Erbil Taner Tugaylı 05.09.2014 15:13
Teşekkür ederim, işinize yaramasına sevindim :)