lostyazilim
tr.link

SQL birden fazla kontrolle tek alanı güncelleme sorunu

3 Mesajlar 1.179 Okunma
lstbozum
tr.link

World World WM Aracı Kullanıcı
  • Üyelik 27.10.2012
  • Yaş/Cinsiyet 31 / E
  • Meslek -
  • Konum Aydın
  • Ad Soyad C** K**
  • Mesajlar 169
  • Beğeniler 8 / 26
  • Ticaret 0, (%0)
Sormak istediğim şey programlama dillerinde if, else if, else gibi komutları microsoft accesste sql ile nasıl kullanabiliriz.

Örnek soru:

Kayıtların bağlı olduğu operatörlere göre "kdv" alanını hesaplatınız. (Avea=%3, Vodofone=%4, Turkcell=%6)

şimdi bu soruyu 3 tane ayrı ayrı sorgu açarak yapmak basit. Örneğin:

Sorgu1:

UPDATE Tablo1
SET kdv=tutar*0.03
WHERE operator="Avea"

Sorgu2:

UPDATE Tablo1
SET kdv=tutar*0.04
WHERE operator="Vodofone"

Sorgu3:

UPDATE Tablo1
SET kdv=tutar*0.06
WHERE operator="Turkcell"


Size sorum; bu 3 sorguyu tek bir sorguda nasıl çalıştırabiliriz?

Yardımcı olursanız sevinirim :)
 

 

wmaraci
reklam

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Üyelik 25.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Engineering Director
  • Konum İstanbul Avrupa
  • Ad Soyad T** C**
  • Mesajlar 771
  • Beğeniler 2 / 260
  • Ticaret 0, (%0)
Kod içinden çağırman daha iyi olur. kodun bakımı daha rahat olur yarın daha kompleks bir şey yazmak istediğinde programlama dili ile daha rahat yapabilirsin.

t-sql -> prosedürel dildir, c# object oriented dildir.

Hea yok ben ille de t-sql ile yapacam diyorsan.

bir adet stored procedure yaz, tek parametre alsın istediğin gibi koşullar ile güncelle.

C# client ile basit bir çağrımı;


SqlParameter[] sqlParameters =
{
new SqlParameter("@operator", operator)
};

SqlHelper.ExecuteNonQuery("connectionString", CommandType.StoredProcedure, "kdv_hesapla", sqlParameters);



DDL ;

create procedure kdv_hesapla(
@operator varchar(50)
)

as

begin

if (@operator = 'Avea')
begin
UPDATE Tablo1
SET kdv=tutar*0.03
WHERE operator='Avea'
end
else if (@operator = 'Vodofone')
begin
UPDATE Tablo1
SET kdv=tutar*0.04
WHERE operator='Vodofone'
end
else if (@operator = 'Turkcell')
begin
UPDATE Tablo1
SET kdv=tutar*0.06
WHERE operator='Turkcell';
end

end
 

 

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)

World World WM Aracı Kullanıcı
  • Üyelik 27.10.2012
  • Yaş/Cinsiyet 31 / E
  • Meslek -
  • Konum Aydın
  • Ad Soyad C** K**
  • Mesajlar 169
  • Beğeniler 8 / 26
  • Ticaret 0, (%0)
Teşekkürler
 

 

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al