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

Konu Başlığı: Numaraya göre sıralama (Mysql)

  1. #1

    Numaraya göre sıralama (Mysql)

    Db de bir hücreyi düşünün; MUZ.1, MUZ.2,MUZ.3 .... MUZ.25, MUZ.26... şeklinde gidiyor; bazen de ED.1, ED.2, ....ED.24,ED.25.. şeklinde olabiliyor.

    Yani; nokta (.) öncesi bölüm bazen 3, bazen 2 karakter olabiliyor, şimdi benim sorunum girilen iki aralığa göre;
    örneğin MUZ.1 İLE MUZ.25 arasını listelet dediğinde bunu nasıl yaparım. MUZ vs kategori ile bağlantılı olduğundan orası kategori seçilmesi ile otomatik alınıyor. Neyse..

    Girişte sadece sayı ifadesi giriliyor; örneğin 1 ile 25 sayıları sınırları belirliyor, bu değerleri alarak verileri listeletmeyi yapmak ise bana düşüyor. Cevapları bekliyorum.

    İkinci olarak da; order by sira asc dediğimde (sira dan kastedilen az önceki MUZ.1, MUZ.2,MUZ.3 .... MUZ.25, MUZ.26..) ; MUZ.1 , MUZ.10, MUZ.100, şeklinde listeliyor; fakat bana MUZ.1, MUZ.2 .. şeklinde lazım, yardımlarınızı bekliyorum.
    http://www.limonsuz.com
    Sert Çocukların Yeri

  2. #2

    Re: Numaraya göre sıralama (Mysql)

    tablo alanı varchar tipinde ve adı "kod" olsun.

    MUZ.5 değerindeki 5 sayisini alabilmek için SUBSTRING(kod, 5) kullandık. İfadeyi ROUND fonksiyonu içine sokarak ORDER BY ifadesinin istediğimiz gibi nümerik sıralama yapmasını sağladık.

    Kod:
    "MUZ." 4 karakterdir. Beşinci karakterden sonrası da sayıdır
    select kod, ROUND(SUBSTRING(kod, 5)) as sayi from test 
    where LEFT(kod, 2) = 'MU' AND (ROUND(SUBSTRING(kod, 5)) >= 1 AND ROUND(SUBSTRING(kod, 5)) <= 25)
    order by sayi asc;
    
    "ED." 3 karakterdir. Dördüncü karakterden sonrası sayıdır.
    select kod, ROUND(SUBSTRING(kod, 4)) as sayi from test 
    where LEFT(kod, 2) = ED'  AND (ROUND(SUBSTRING(kod, 5)) >= 1 AND ROUND(SUBSTRING(kod, 5)) <= 25)
    order by sayi asc;
    
    Mesaj wefra tarafından 16.01.2009 (07:16) yeniden düzenlendi.
    sevgiSaygi = true;

  3. #3

    Re: Numaraya göre sıralama (Mysql)

    Cevap için teşekkürler;

    bende şöyle bir çözüm buldum.


    PHP Kodu:
    function sirano($sayi){
        
    $sayi explode(".",$sayi);
        
    $sayi=$sayi[1];
         return 
    $sayi;
        }

    $sirano=sirano($sira); 
    şeklinde bir explode fonksiyonu ile; sıralamada string kabul edilen MUZ.25 ifadesine mukabil; numeric olarak "sirano"ya da 25 i yazdırıp;" sirano" ya göre "order by sirano asc" şeklinde bir sorgu ile sıralama 1,2,3 şeklinde istenen şekle geliyor.

    Hem her şart ve koşul için de çözüm üretilmiş; nokta öncesi ifadesinin karakter sayısı da çokta önemli olmuyor bu durumda.
    http://www.limonsuz.com
    Sert Çocukların Yeri

+ 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