MSSQL İf Else Kullanımı dersim ile SQL eğitim setime devam ediyorum. Bu dersimde SQL üzerinde if else kullanımına bakacağız.
MSSQL İf Else Kullanımı
Bazen her şeyi C# ‘ta yapmak bize sadece kod hammallığı yaptırır. Bazı işlemleri sql e yaptırmak her zaman daha kolay gelir. Bu gibi durumlarda if else gibi işlemleri bilmemiz gerekir. düşünsenize tek bir prosedür içerisinde halledebileceğimiz şeyleri C# ile yapmaya kalktığımızda ne kadar çok uğraşmamız gerektiğini düşünün.
Şimdi SQL İf Else kullanımını bir örnek üzerinde görelim.
declare @deger char select @deger = MinDegerUyari from Urunler where ID = 350 if @deger = 0 update Urunler SET MinDegerUyari = 1 where ID = 350 else update Urunler SET MinDegerUyari = 0 where ID = 350 Select * from Urunler where ID = 350
Yukarıda bir if else örneği görüyorsunuz. Bu örnekte Urunler tablosundaki bir stun olan MinDegerUyari eğer 0 ise 1 yapacak 0 değil ise 0 yapacaktır.
Kodlarımızı açıklamamız gerekirse;
- Declare komutu ile atama yapacağımız değerimizi yani değişkenimizi tanımlıyoruz.
- Select komutu ile ID değeri 350 Urunler tablosunda değişiklik yapmak istediğimiz stunu declare komutu ile tanımladığımız @deger komutuna atıyoruz.
- Tanımladığımız @deger değişkeni üzerinden if kontrolunu yaparak if else komutunu çalıştırıytoruz.
- Eğer @deger değişkinemizdeki değer 0 ise
- Urunler tablomuzdaki ID değeri 350 olan satırın MinDegerUyari kolonumuzu 1 olarak update ediyoruz.
- Eğer @deger değişkinemizdeki değer 0 değil ise
- Urunler tablomuzdaki ID değeri 350 olan satırın MinDegerUyari kolonumuzu 0 olarak update ediyoruz.
- Select sorgusu ile de yapılan değişikliği görebiliriz.
SQL if else kullanımı bu şekildedir. Ancak bunu fonksiyonlarda kullanamıyoruz. if Else işlemini sadece stored procedure içerisinde kullanabiliriz. Yada direk Query olarak çalıştırabiliriz. Bu konuda biraz sıkıntımız olsa da çok büyük bir problem değildir. Fonksiyon ya da stored procedure olması pek fark etmiyor yani… Amacımız işimizi en kolay ve kısa yoldan halledebilmek.
MSSQL İf Else Kullanımı dersimiz de bu kadar arkadaşlar. Diğer derslerimizde görüşmek üzere.
Microsoft SQL Server & T-SQL Eğitim Seti ders listesi için tıklayınız.
Buradan C# Eğitim Setimde yayınladığım Github projeme ulaşabilirsiniz.
Sağlıcakla ve Takipte Kalın.
Merhaba kolay gelsin aşağıdaki komutta ben normalde 114932 satır çekmem gerekirken benim oluşturduğum tabloya yaklaşık 914852 stok geliyor ben burda neyi aksik yapmış ola bilirim.
CREATE TABLE [dbo].[TAMERSERISTOKAKTAR]
([ID] [int] NOT NULL,[IND] [nvarchar](255) NULL,[SIRANO] [nvarchar](255) NULL,[MALINCINSI] [nvarchar](255) NULL,[STOKKODU] [nvarchar](255) NULL,[STOKTIPI] [nvarchar](255) NULL,
[ANABIRIM] [nvarchar](255) NULL,[VARSAYILANBIRIM] [nvarchar](255) NULL,[DEPOSEVIYESI] [nvarchar](255) NULL,[DEPO] [nvarchar](255) NULL,[TEMINYERI] [nvarchar](255) NULL,
[KOD1] [nvarchar](255) NULL,[KOD2] [nvarchar](255) NULL,[KOD3] [nvarchar](255) NULL,[KOD4] [nvarchar](255) NULL,
[KOD5] [nvarchar](255) NULL,[KOD6] [nvarchar](255) NULL,[KOD7] [nvarchar](255) NULL,[KOD11] [nvarchar](255) NULL,[KOD12] [nvarchar](255) NULL,[KOD8] [nvarchar](255) NULL,[KOD9] [nvarchar](255) NULL,[KOD10] [nvarchar](255) NULL,
[BIRIMADI] [nvarchar](255) NULL,[ACIKLAMA] [nvarchar](255) NULL,[ALISFIYATI] [nvarchar](255) NULL,[APB] [nvarchar](255) NULL,[MALIYET] [nvarchar](255) NULL,
[KDVGRUBU] [nvarchar](255) NULL,[STATUS] [nvarchar](255) NULL,[ALISKDVORANI] [nvarchar](255) NULL,
[SATISFIYATI1] [nvarchar](255) NULL,[SATISFIYATI2] [nvarchar](255) NULL,[SATISFIYATI3] [nvarchar](255) NULL,[SATISFIYATI4] [nvarchar](255) NULL,[SATISFIYATI5] [nvarchar](255) NULL,
[PB1] [nvarchar](255) NULL,[PB2] [nvarchar](255) NULL,[PB3] [nvarchar](255) NULL,[PB4] [nvarchar](255) NULL,[PB5] [nvarchar](255) NULL,
[BARCODE] [nvarchar](255) NULL,[RENKLER] [nvarchar](255) NULL,[RENKKODU] [nvarchar](255) NULL,[RENKADI] [nvarchar](255) NULL
) ON [PRIMARY]
SELECT * FROM TAMERSERISTOKAKTAR
INSERT INTO TAMERSERISTOKAKTAR
(ID,IND,SIRANO,MALINCINSI,STOKKODU,STOKTIPI,
ANABIRIM,VARSAYILANBIRIM,DEPOSEVIYESI,DEPO,
KOD1,KOD2,KOD3,KOD4,KOD5,KOD6,KOD7,KOD11,KOD12,KOD8,KOD9,KOD10,
BIRIMADI,ACIKLAMA,ALISFIYATI,APB,MALIYET,
KDVGRUBU,ALISKDVORANI,
SATISFIYATI1,SATISFIYATI2,SATISFIYATI3,SATISFIYATI4,SATISFIYATI5,
PB1,PB2,PB3,PB4,PB5,
BARCODE,RENKLER,RENKKODU,RENKADI)
SELECT
STOK.Id,STOK.Id,STOK.AnaStokId,STOK.StokAdi,STOK.StokKodu,STOK.StokTipi,
STOK.AnaBirim,STOK.VarsayilanBirim,’1′,’1′,
(select kod from CodeDB_1..OzelKodlar where kodno=1 and Id=STOK.ozelkod1 ) AS KOD1,
(select kod from CodeDB_1..OzelKodlar where kodno=2 and Id=STOK.ozelkod2 ) AS KOD2,
(select kod from CodeDB_1..OzelKodlar where kodno=3 and Id=STOK.ozelkod3 ) AS KOD3,
(select kod from CodeDB_1..OzelKodlar where kodno=4 and Id=STOK.OzelKod4 ) AS KOD4,
(select kod from CodeDB_1..OzelKodlar where kodno=5 and Id=STOK.OzelKod5 ) AS KOD5,
(select kod from CodeDB_1..OzelKodlar where kodno=6 and Id=STOK.OzelKod6 ) AS KOD6,
(select kod from CodeDB_1..OzelKodlar where kodno=7 and Id=STOK.OzelKod7 ) AS KOD7,
(select kod from CodeDB_1..OzelKodlar where kodno=8 and Id=STOK.OzelKod8 ) AS KOD11,
(select kod from CodeDB_1..OzelKodlar where kodno=9 and Id=STOK.OzelKod9 ) AS KOD12,
STOK.StokKodu AS KOD8,CRENK.Adi AS KOD9,CBEDEN.Kodu AS KOD10,
‘ADET’ AS BIRIMADI,’FIYAT’ AS ACIKLAMA,BIRIM.Fiyat2,’TL’ AS APB,BIRIM.Fiyat2,
‘100’ AS KDVGRUBU,’8′ AS AKDVORANI,
BIRIM.Fiyat1,BIRIM.Fiyat2,BIRIM.Fiyat3,BIRIM.Fiyat4,BIRIM.Fiyat5,
‘TL’ AS PB1,’TL’ AS PB2,’TL’ AS PB3,’TL’ AS PB4,’TL’ AS PB5,BRK.Barkodu,CRENK.Id,CRENK.RenkKodu,CRENK.Adi
FROM
CodeDB_1..Stoklar AS STOK
LEFT JOIN CodeDB_1..Birimler AS BIRIM ON BIRIM.StokId=STOK.Id
LEFT JOIN CodeDB_1..Barkodlar AS BRK ON BRK.BirimId=BIRIM.Id
LEFT JOIN CodeDB_1..Renkler AS CRENK ON CRENK.RenkKodu=STOK.RenkKodu
LEFT JOIN CodeDB_1..Bedenler AS CBEDEN ON CBEDEN.Kodu=STOK.BedenKodu
Merhaba,
Öncelikle üzülerek belirtmeliyim ki verdiğiniz kodları dikkatlice inceleme şansım yok maalesef. Bu gibi sorunlar left join, inner join gibi join ifadelerinde rastlanılan bir durumdur.
Join kısmını incelediğimde ikinci join olan barkodlar tablosunu, birimler tablosu ile eşlemiş olmanızdan dolayı kayıtlar çoğalmış olabilir.
Burada sorgunuzdan dönen değerleri inceleyip neyin tekrar ettiğini incelemeniz gerekiyor. Neyin çok fazla tekrar ettiğine göre hangi tablo üzerinden yaptığınız eşleştirmelerin hataya sebep olduğunu bulabilirsiniz.