+ Yanıtla
Toplam 3 sonuçtan 1 ile 3 arası olanlar

Konu Başlığı: Veritabanından girilen değere en yakın değere sahip kaydı çağırmak

  1. #1

    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?

  2. #2

    Re: Veritabanından girilen değere en yakın değere sahip kaydı çağırmak

    Sorduğun şey aslında çok fazla komplike olmakla beraber, farkı en küçük olan sayılar birbirlerine en yakın sayılardır diyebiliriz ;

    Veritabanı:
    id x
    1 300
    2 600
    3 700

    Adamın girdiği değerler:
    x
    500

    SELECT *,ABS(500-x) AS fark FROM bisey ORDER BY fark DESC LIMIT 1

    olurdu, ancak senin iki adet verin var, bu durumda önceliği olan veriyi seçmelisin, x e öncelik verirsen;

    Veritabanı:
    id x y
    1 300 600
    2 600 500
    3 700 300

    Adamın girdiği değerler:
    x y
    500 400

    SELECT *,ABS(500-x) AS farkX, ABS(400-y) AS farkY FROM bisey ORDER BY farkX DESC, farkY DESC LIMIT 1

    Yada sadece x veya sadece y ye en yakın olanı seçtikten sonra, bir de alanı en yakın olan değeri aynı yöntemle bulup sıralayabilirsin, veya işte kombine edip kafana göre birşeyler yapabilirsin.

  3. #3

    Re: Veritabanından girilen değere en yakın değere sahip kaydı çağırmak

    Çok teşekkür ederim, istediğim sorgu tam olarak buydu.

+ Yanıtla

Bu konu başlığı için etiketler

Mesaj Seçenekleri

  • Yeni başlık açamazsınız
  • Cevap yazabilirsiniz
  • Dosya ekleyemezsiniz
  • Mesajlarınızı değiştiremezsiniz