merhaba arkadaşlar bugün sizlere kısaca tek sorgu ile Mysql update ile statu değiştirme kolayca nasıl değiştirebiliriz bunu örnek ile anlatmak isteyeceğim. Bunun neden ise php üzerinden basit bir şekilde if else kullanmak yerine mysql tek sorgu ile istediğimiz durum alanını değiştirebiliriz siz isterseniz bu sorguyu kendinize göre güncelleyebilir geliştirebilir yorumlarınızla paylaşabilirsiniz.
Örnek kodumuz
[code]<br data-mce-bogus="1">
UPDATE tablo, (SELECT CASE statu WHEN 1 THEN 0 WHEN 0 THEN 1 END as durum FROM tablo) say SET tablo.statu=say.durum
[/code]
kodu size yarayaracak şekilde kullanabilirsiniz. Bilmeyenler için case alan when değet then değer ne işe yarar kısaca anlatmak isterim;
SQL Serverda case fonksiyonu sorgu sonucu dönen bir kolonun degerine göre farkli islemler yapabilmemize olanak saglar. Istedigimiz bir kolonun degerini belirli sartlari kontrol ederek yeni bir degerle degistirmek için kullanabiliriz. Örnegin tablomuzdaki cinsiyet kolonundan ‘E’ geldiginde sorgu sonucunda Erkek ‘B’ geldiginde ise Bayan yazmasini istiyorsak case fonksiyonunu kullanmak en mantikli ve en kolay yoldur. Basit bir örnekle baslayacak olursak;
Kisi diye bir tablomuz olsun bu tablodan select Ad,Soyad,Cinsiyet from Kisi sorgusu ile kayit çektigimizde asagidaki liste dönmekte.
Ad | Soyad | Cinsiyet |
---|---|---|
Ali | Demir | E |
Hasan | Ertekin | E |
Ilhan | Yücel | E |
Leyla | Ece | B |
Metin | Tosun | E |
Dikkat edilirse Cinsiyet için tek karakterlik bir sonuç dönmekte, eger biz sorgu sonucunda cinsiyeti ‘E’ olan kayitlari Erkek, ‘B’ olan kayitlari da Bayan diye göstermek istersek asagidaki sorguyu yazmamiz gerekir.
1 2 3 | SELECT Ad,Soyad, case Cinsiyet when 'E' then 'Erkek' when 'B' then 'Bayan' end as Cinsiyet FROM Kisi |
Yukaridaki sorgu sonucu asagidaki liste döner. Listede de görüldügü gibi Cinsiyet kolonunu istedigimiz yapida degistirerek listeye ekledik.
Ad | Soyad | Cinsiyet |
---|---|---|
Ali | Demir | Erkek |
Hasan | Ertekin | Erkek |
Ilhan | Yücel | Erkek |
Leyla | Ece | Bayan |
Metin | Tosun | Erkek |
Case fonksiyonu bir çok farklı durum için kullanılabilir. Örnegin Müşteri ve KonusmaKaydi diye iki tablomuz var. Her musterinin konumsa kayitlari konumsa kaydi tablosunda konusma yönüne göre tutuluyor. Her konumsa için konusma kaydi tablosuna yeni bir kayit giriliyor. Konusma yönü sehir içi, sehirlerarasi, GSM gibi degisiklik göstermekte. Biz müsterinin konusma kayitlarini bulmak için bu iki tabloyu birbirine baglayarak istegimiz kayıtları alabiliriz.
daha detaylı bilgi almak isterseniz yazılım mutfağındaki yazıyı okuyabilirsiniz.