

Veritabanından Girilen Değere En Yakın Değere Sahip Kaydı Çağırmak
-
Elimde yaklaşık 700 kayıttan oluşan bir SQL veritabanım var.İçinde en, boy ve fiyat bilgileri var.
Kullanıcının girmiş olduğu en ve boy bilgilerine en yakın olan kaydı çağırmam gerekiyor.
Örnek vermek gerekirse.Tabloda 3 kayıt olduğunu varsayalım.
en boy fiyat
500 300 100
600 400 150
700 550 200
Kullanıcınıcımızın girmiş olduğu en=540 boy=330 olduğunda bunlara en yakın olan kayıtlar en=500 boy=300 satırından fiyat bilgisi çekilip kullanıcıya 100 ytl olarak göstermem lazım.Bir iki deneme yaptım (where en<540 nd boy<330 limit 1 ) gibi ama tam net bir sorgu oluşturamadım.Bu anlattıklarımı yapabilmem için nasıl bir sorgu yazmam lazım? -
en>değer-100 and en<değer+100 and boy>değer-100 and boy<değer+100 ü çağırıp, yada duruma göre bu 100 değerini küçültüp, top(1) dierek ilk gelen kaydı cağırabilirsin...
Biraz garip bi işlem olmuş, sql yerine arama algoritmasıyla bulmak daha mantıklı olabilir belki
-
the_ilkay bunu yazdı:
-----------------------------
Elimde yaklaşık 700 kayıttan oluşan bir SQL veritabanım var.İçinde en, boy ve fiyat bilgileri var.
Kullanıcının girmiş olduğu en ve boy bilgilerine en yakın olan kaydı çağırmam gerekiyor.
Örnek vermek gerekirse.Tabloda 3 kayıt olduğunu varsayalım.
en boy fiyat
500 300 100
600 400 150
700 550 200
Kullanıcınıcımızın girmiş olduğu en=540 boy=330 olduğunda bunlara en yakın olan kayıtlar en=500 boy=300 satırından fiyat bilgisi çekilip kullanıcıya 100 ytl olarak göstermem lazım.Bir iki deneme yaptım (where en<540 nd boy<330 limit 1 ) gibi ama tam net bir sorgu oluşturamadım.Bu anlattıklarımı yapabilmem için nasıl bir sorgu yazmam lazım?
-----------------------------WHERE kullanarak sınırlandıracaksın aramayı
Sonra da Aralıktaki en ucuzu için ORDER BY kullanacaksın
Az çok olayı içinde ASCENDANT DESCENDANT kullanacaksın.
Ama Rene nin dediği gibi fazladan çekip,
Sonra dil ile de sınırlandırabilirsin.
Nasıl olsa serverda çalışıyor ve bu sorgu hep yapılacak.
Yani DataTable larını hep dolu tutabilirsin...
Tekrar okuyunca anladım derdini.
Eğer öyle birşey yoksa,
Şöyle bir mantık izliyceksin
if( DT.Rows.Count == 0 )
İçine de yeni bir SQL sorgusu, aralık değiştirirerek.
Araya bir de, 'Aradığınız ürünler bulunamadı, ama elimizde bu var' gibi bir mesaj koyabilirsin.