asp.net ile bir proje geliştiriyorum. Fakat bir konuda yardıma ihtiyacım var. Asp.net sayfasında veri tabanından yüzlece ürünü çekiyorum. Sayfanın üst tarafında da ürünlerin genel özellikleri yazıyor. Fiyat aralığı, kategorisi, cinsi vs. ben bu şekilde bir filtre elde etmek istiyorum. Aslında buradaki filtrenin bir benzerini elde etmeye çalışıyorum. Mesela sahibinden.com örneğinde, model yılı ve km'yi seçtik fakat diğer seçenekler seçili değilse tümünü gösterdi. Buradaki sql sorgusu birden fazla mı olmalı? If else metodu ile mi yapılır bu? Yada nasıl olmalı?
Yardımcı olursanız sevinirim.
Teşekkürler...
Tek sql sorgusunda yapilabilir. Parametrelere gore inline sql yazip execute yapilabilir.
Veya alinan tum data uzerinden if elselerle filtreleme yapilabilir.
Linq, entityframewok vs kullaniyorsaniz da filtreleme yapilabilir
Verdiğiniz bilgiler için teşekkürler.
Örnek vererek açıklasaydınız daha aydınlatıcı olurdu.
isim ve fiyat parametrelerinin önyüzden kullanıcının girdiğini varsayalım. Girmeyedebilir, null olabilir.
Şöyle bir query yaratabilirsin:
select * from items where (@name is null or item_name like '%' + @name + '%') and (@price is null or item_price < @price)";
quote:
Orijinalden alıntı: Finney
isim ve fiyat parametrelerinin önyüzden kullanıcının girdiğini varsayalım. Girmeyedebilir, null olabilir.
Şöyle bir query yaratabilirsin:
select * from items where (@name is null or item_name like '%' + @name + '%') and (@price is null or item_price < @price)";
Teşekkür ederim finney
algoritmayı çözdüm sayılır. Bir sorum daha olacak. Aşağıdaki linkteki gibi bir robot yapmak istiyorum. Linkteki tercih robotundan yola çıkarak örneklendireyim. Robottan gitmek istediğim bölümü seçtim ve diğer alanları boş bıraktım. O zaman arka plandaki sorgu her kontrolün seçilip seçilmediğini kontrol ettikten sonra seçili değilse tümünü listele diyor. Mantığı anladım fakat koda dökerken sorun yaşıyorum. Sayfada 5-6 tane kontrol olduğunu düşünün. Ben 6 kontrole de tüm olasılıkları yazmam gerek. Bunu QUERY'ye nasıl dökeceğimi tam anlamadım.
Yani SELECT * FROM lys_secim where
if (istanbul.Checked) //istanbul seçili ise { where sehir = "istanbul" //sadece istanbul ilince olanları ver } if (ankara.Checked) //ankara seçili ise { where sehir = "ankara" //sadece ankara ilince olanları ver }
Gibi tüm iller sıralanabilir
Sorgu bitmedi daha birde öğrenci puan türünü seçecek
if (lys3.Checked) //lys3 seçili ise { where puan_turu = "lys3" //sadece lys3 puan türündekileri ver }
Yapmak istediğim özetle bu şekilde bir şey. Tüm olasılıkları verip tek sorgu yapmak istiyorum. Fakat sorguyu en basit ve en sorunsuz bir şekilde nasıl yaparım bilemiyorum. http://universitetercihleri.com/ddtercih
pek kontrol edemedim hata varsa sen düzeltirsin :
string query = "SELECT * FROM lys_secim "; string predicate;
if (istanbul.isChecked) { predicate = "where sehir='istanbul'"; } if (ankara.isChecked) { if (predicate != null) { predicate += " and " } else { predicate = "where "; }
predicate += "sehir = 'ankara'"; } if (lys3.Checked) { if (predicate != null) { predicate += " and " } else { predicate = "where "; }
predicate += "puan_turu = 'lys3'"; }
query += predicate;
quote:
Orijinalden alıntı: Finney
pek kontrol edemedim hata varsa sen düzeltirsin :
string query = "SELECT * FROM lys_secim "; string predicate;
if (istanbul.isChecked) { predicate = "where sehir='istanbul'"; } if (ankara.isChecked) { if (predicate != null) { predicate += " and " } else { predicate = "where "; }
predicate += "sehir = 'ankara'"; } if (lys3.Checked) { if (predicate != null) { predicate += " and " } else { predicate = "where "; }