Merhaba SQL Where Case When Kullanmak dersim SQL eğitim setime devam ediyorum. Bu dersimizde SQL ‘de Where kısmında Case When nasıl kullanılır ona bakacağız. Geçen günlerde bir iş için gerekli olmuştu. Böyle bir ders yazmadığım içinde yazmak istedim.
SQL Where Case When Kullanmak
Bu dersimizde Where kısmında Case When kullanımını göreceğiz.
Şöyle bir senaryomuz olsun. Bir mağazada, 5 farklı kategoride ürün olsun ve 5 farklı kullanıcı sadece kendisine atanan kategorilerdeki ürünleri görebilsin.
Böyle bir senaryo da nasıl bir işlem yapmamız gerektiğini görelim. Elbette bu işi yapmak için farklı yöntemlerde vardır. Ben sadece Where Case When kullanımı için uygun olabilecek bir örnek vermek istedim. Elimde aşağıdaki gibi örnek bir tablo var. stok_kategori kolonuna göre dışarıdan gönderdiğimiz kullanıcı adına göre stokların bir listesini alacağız.
Bu projede her kullanıcı stok kaydını yapabilir. Örneğin Mustafa kullanıcısı, sadece kategorisi “Kategori 1” olan stokları görebilir ama diğer kategorilere stok kaydedebilir.
declare @Kullanici as nvarchar(50) set @Kullanici = 'Mustafa'
Bu dışarıdan gönderdiğimiz değişken olsun. Fonksiyon(Function) veya Saklı Yordam (Stored Procedure) kullanıyorsanız, onlara verdiğiniz parametre olabilir. Şimdi sorgumuzu görelim.
SELECT * FROM Stoklar where stok_kategori = ( case @Kullanici when 'Mustafa' then 'kategori 1' when 'Ali' then 'kategori 2' when 'Cemal' then 'kategori 3' when 'Ahmet' then 'kategori 4' when 'Veli' then 'kategori 5' end)
Yukarıdaki kodlarda gördüğünüz gibi, stok_kategori’si kolonuna eşlenecek olan kategori bilgisini case when ile belirlemiş oluyoruz.
- Dışarıdan gönderilen @Kullanıcı parametresi, “Mustafa” ise sadece “Kategori 1” kategorisindeki stokları görebilir.
- Dışarıdan gönderilen @Kullanıcı parametresi, “Ali” ise sadece “Kategori 2” kategorisindeki stokları görebilir.
- Dışarıdan gönderilen @Kullanıcı parametresi, “Cemal” ise sadece “Kategori 3” kategorisindeki stokları görebilir.
- Dışarıdan gönderilen @Kullanıcı parametresi, “Ahmet” ise sadece “Kategori 4” kategorisindeki stokları görebilir.
- Dışarıdan gönderilen @Kullanıcı parametresi, “Veli” ise sadece “Kategori 5” kategorisindeki stokları görebilir.
Mustafa kullanıcısı için sorgumuzu çalıştıralım.
Görselde gördüğünüz gibi 3 tane Mustafa, 1 tane de Veli kullanıcısının eklediği “Kategori 1” adlı kategorisindeki tüm stoklar listelendi. Bu şekilde Where kısmında Case When kullanarak kullanıcıların görebileceği verileri kısıtlayabiliriz.
Bu şekilde kullanmazsak bir çok sorgu yazmamız gerekir. Örneğin projeyi geliştirdiğiniz dilde bir İf Else yada Switch Case ile farklı sorgular yazmanız gerekebilir. Ama bu şekilde bir kullanım ile tek sorguda işleri çözebiliriz.
SQL Where Case When Kullanmak dersimde bu kadardı 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.
Bu yazı, sitemdeki 450. yazıdır… Sağlıcakla ve Takipte Kalın.