MySQL Update Join Komutu

Merhaba Arkadaşlar,

Bir süredir burada yazılım odaklı yazılar yazamıyordum ve bunun yine farkına vardığımda sonradan bana ya da size lazım olabilecek bir şeyler paylaşmak istedim. Bu yazıda Sosyal Medya Danışmanlığı ile ilgili bir yazı olmadığını da belirtmem gerekir :)

SQL ile ve özellikle de MySQL ile ilgileniyor ve kod yazıyorsanız; update ve inner, left ya da right join ifadelerini biliyorsunuzdur. Bu yazıda MySQL  sorgusu ile veritabanımızdaki bir tablodaki değeri, diğer tablolardan bir tanesindeki değer ile güncelleyeceğiz. Hatta, bunu biraz daha çeşitlendirerek, daha farklı yöntemleri de deneyebiliriz.

MySQL Update
MySQL Update

 

T-SQL:

UPDATE table1
SET col1 = t2.col1, col2 = t2.col2
FROM table1 t1 JOIN table2 t2 ON t1.id = t2.id

MySQL:

UPDATE table1 t1 JOIN table2 t2 ON t1.id = t2.id
SET t1.col1 = t2.col2, t1.col2 = t2.col2

 

MySQL Update Join

Buradaki kodları incelemek gerekirse, MySQL için olan sorgu ile başlıyorum.

Öncelikle table1 tablosundaki id sutunları ile table2 tablosundaki id sütunları eşleşen satırları alıyoruz.

Ardından, SET kısmına geliyoruz. SET t1.col1 = t2.col2 ile ise table1 (t1) tablosundaki col1 sütunun değerini table2 (t2) tablosundaki col2 sütunun değeri ile güncelliyoruz.

 

MySQL Güncelleme

Şimdi ise, urunler isimli tablomuzda yer alan stok sütununu sipariş aldığımızda otomatik olarak güncelleyeceğiz. Bunun için ise siparisler tablosundaki adet sütununu kullanacağız. Özet ile adet sayılarını göz önünde bulundurarak, urunler tablomuzdaki stok miktarını güncelleyeceğiz.

 

UPDATE urunler u JOIN siparisler2 s ON s.urunid=u.urunid
SET u.stok=u.stok-s.adet
WHERE s.siparisid=’1′

 

Aldığımız siparişleri tuttuğumuz tablodan, ürünlerin kaçar adet satıldığını aldık ve adet miktarınca stoktaki ürün miktarımızı azalttık. Burada siparisler tablomuzda birden fazla ürün olabileceğini göz önünde bulundurmalıyız. Ayrıca, siparisid olarak da o siparişin  ID’sini düşünebilirsiniz. Yani her sipariş aldığınızda bunu uygulayabilirsiniz. İsterseniz, belli bir onay mekanizması uygulayabilirsiniz. Örneğin, sipariş onaylama ekranınızda siparişi onayladığınızda bu SQL sorgusuyla ürünlerinizin stok miktarını azaltırsanız daha sağlıklı olacaktır. Bunun nedeni ise, bir sipariş aldığınızda eğer bu gerçek bir sipariş değilse ya da sonradan ödemesinin yapılmaması gibi nedenlerle bu sipariş iptal olursa; boş yere ürün stoğunuzu düşürmemiş olursunuz. Benim tavsiyeme göre yaparsanız, zaten sipariş onaylandığı için o sipariş elinizden çıkacaktır demek oluyor ve bu nedenle de daha sağlıklı bir sistem kurgulamış olabilirsiniz.

 

Eklemek istediğiniz ya da aklınıza takılan kısımlar olursa, lütfen yorumlarınız ile iletişim içerisinde olalım.

Hatasız kodlamalar :)

 

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir