Forum

IN( NULL ) gör...
 
Bildirimler
Hepsini Temizle

IN( NULL ) görevini üstelenecek deyim

3 Yazılar
2 Üyeler
0 Likes
1,614 Görüntüleme
(@elmirasuleymanova)
Gönderiler: 39
Trusted Member
Konu başlatıcı
 

Merhaba, Where cat = Like '%' + @category + '%' deyiminde olduğu gibi STRING değil de, uniqueidentifier veri üzerinde çalışıyorsak

Where catID = IN ( Select ID from Ürünler Where ctgry = 'Süt Ürünleri' ) ifadesinde eğer süt ürünleri FİLTRESİ hiç kullanılmadıysa, NULL gelecek ise,

Where catID = IN ( NULL ) ise yani, Where catID koşulunu nasıl deaktif hale getirebiliriz ?

if else şeklinde iki sorgu yapmadan tek sorgu üzerinde bir çözümü var mıdır?

 
Gönderildi : 18/05/2017 13:05

(@SuleymanKas)
Gönderiler: 9
Active Member
 

Merhaba, Where cat = Like '%' + @category + '%' deyiminde olduğu gibi STRING değil de, uniqueidentifier veri üzerinde çalışıyorsak

Where catID = IN ( Select ID from Ürünler Where ctgry = 'Süt Ürünleri' ) ifadesinde eğer süt ürünleri FİLTRESİ hiç kullanılmadıysa, NULL gelecek ise,

Where catID = IN ( NULL ) ise yani, Where catID koşulunu nasıl deaktif hale getirebiliriz ?

if else şeklinde iki sorgu yapmadan tek sorgu üzerinde bir çözümü var mıdır?

 

 

Merhabalar, alternatif olarak  ISNULL() ifadesini de kullanabilirsiniz.

 

ISNULL Kullanımı ;

 

ISNULL(@sorgu1,@sorgu2)  sorgu1 null ise sorgu2 yi getir.

 

ISNULL( 'ilgili kolon veya sorgu sonucu' , 'null ise alacağı değer veya farklı bir sorgu sonucu' ) 

 

 

 
Gönderildi : 25/05/2017 17:50

(@elmirasuleymanova)
Gönderiler: 39
Trusted Member
Konu başlatıcı
 

Merhaba,

hepinize ayrı ayrı şükranlarımı borç bilirim.

Sayın Yavuz Bey'in dediği şekilde, sanırım where ifadesinden sonraki case deyimini kapsıyor galiba, en azından ben öyle anladım;

bir select case i var, bir de where case i, belki ilginç gelecek ama benim aradığım ikisinin ortası... şöyle ki;

 

select * from ürünler case @değişken when not null then where = @değişken end gibi (ilginç değil mi :))

 

Sayın Süleyman Bey ise, isnull(...., ....) ifadesini (benim istediğim şekilde kullanılamaz da)

 

select * from ürünler isnull ( @değişken, where kategori = @değişken) şeklinde eklemek mümkün olsa idi, çok güzel olacaktı sonuç.

 

aslında benim yapmak istediğim şu idi; hatalı bir söz dizimi ama, kendimi daha iyi anlatabilmek için başvuruyorum,

select * from ürünler ( if @değişken is not null begin where kategori = @değişken end )

gibi...

 

böylece eğer @değişken de değer var ise

select * from ürünler where kategori = @değişken

eğer @değişken de değer yok ise

select * from ürünler

halini alacak.

neden

if @değişken is not null

begin

select * from ürünler where kategoriler = @değişken

end

else

begin

select * from ürünler

end

diyemiyorum;

çünkü varsayım olarak bir @değişlen değil

100 @değikeninizin olduğunu düşünün

bu sayıda değişkene göre if else merdiveni kurmak binlerce satır kod demek.

 

 

select * from ürünler

( eğer @değişken de değer var ise where kategori = @değişken koşulunu deklare et)

+ (eğer @değişken2 de değer var ise where boya rengi = @değişken2 koşulunu deklare et)

+ (eğer @değişken3 de değer var ise where cila = @değişken3 koşulunu deklare et)

sorgu cümlesini dinamikleştirmeden anahtar kelimelerle (case when then in isnull) nasıl sağlarım aklımda onu canlandıramadım.

 

 

böyle bir cümle nasıl kurulabilir anahtar kelimeler ile ?

 

şükranlarımı sunarım.

 
Gönderildi : 27/05/2017 01:07

Paylaş: