Forum
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?
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' )
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.