SQL Sıralam İşlemleri (ORDER BY Komutu)

SQL Sıralam İşlemleri (ORDER BY Komutu)

SQL sorgularını listelerken sıralama işlemlerine ihtiyaç duyabiliriz. Bu sıralama tarihe, id değerine ve harflere göre yapılabilir. “ORDER BY” anahtar kelimesiyle iki farklı sıralama işlemi vardır. Bunlar;

  1. ASC (Küçükten Büyüğe, Eskiden Yeniye, A’dan Z’ye) sıralama
  2. DESC (Büyükten küçüğe, Yeniden Eskiye, Z’den A’ya) sırlama

Sözdizimi;

SELECT (Listelenecek Alan) FROM (Tablo Adı) ORDER BY (Sıralamanın Yapılacağı Alan) ASC/DESC

Örneğin okul veritabanımızdaki öğrenci adlarını A’dan Z’ye listeleyelim;

Sorgumuz;

Çıktımız ise;

 

Görüldüğü üzere ASC anahtar kelimemiz adiSoyadi sütununu A’dan Z’ye sıraladı. ORDER BY ile birlikte ASC ya da DESC komutu kullanılmamışsa sorgu ASC komutunu baz alarak şekillenir.

Örnek; Ogrenci tablosundaki öğrenci isimlerini doğum tarihine göre eskiden yeniye doğru sıralayalım;

Sorgumuz;

Çıktımız;

 

Görüldüğü üzere ASC komutu kullanmadığımız halde sıralama ASC komutuna göre yapıldı.

Şimdi bir de DESC komutuna göre id numarasına göre sıralama yapalım;

Çıktımız ise aşağıdaki gibi olacak;

Görüldüğü üzere DESC komutu ile “id” değerine göre büyükten küçüğe doğru sıralama yaptık. Ancak listemiz çok uzun geldi. Yapacak bişey yok demeyeceğim, yapacak bişey var.

Bunun gibi uzun listelerde sadece belirli sayıda sonuç çekmek için LIMIT komutunu kullanabilirsiniz.

LIMIT komutu sorguda sadece belirlediğiniz sayıda sonuç listelemek için kullanılır;

Şimdi yularıdaki sorgumuzda “limit” komutunu kullanarak 10 adet sonuç çektirelim.

Çıktımız;

Gördüğümüz gibi sorgu sanucunu LIMIT komutu ile 10 sonuç ile sınırladık.

 

 

2 Responses

  1. Ömer Said dedi ki:

    Merhaba;
    Sadece bolumId de örnek olarak bolumId=8 olanları ekrana nasıl yazdırabilirsiniz?

    Benim elimde bir proje var ve ben categorie_id=1 olanları ekrana çıkarmak istiyorum. Ancak işin içinden bir türlü çıkamadım.

    Kod örneğini aşağıdaveriyorum.

    sql.php de bulunan fonksiyonum aşağıdır.

    function join_product_table(){
    global $db;
    $sql =” SELECT p.id,p.isim,p.name,p.quantity,p.price,p.part_no,p.oem_ref,p.model,p.media_id,p.date,c.name”;
    $sql .=” AS categorie,m.file_name AS image”;
    $sql .=” FROM products p”;
    $sql .=” LEFT JOIN categories c ON c.id = p.categorie_id”;
    $sql .=” LEFT JOIN media m ON m.id = p.media_id”;
    $sql .=” ORDER BY p.id ASC”;
    return find_by_sql($sql);

    }

    ekran göstermek istediğimde home.php kodlarım

    $products = join_categorie_table();

    <img src="../inventory/uploads/products/” alt=””>

     ₺

    tüm kodları ekrana yazmadım ama sanırım bu kodlarla sorunumu anlayabilirsiniz.

    • Samet Karaca dedi ki:

      Order By komutundan önce

      $sql.= ” WHERE p.categorie_id = 1″;
      komutu eklerseniz, kategori id’si 1 olan ürünleri filtreleyebilirsiniz.

      function join_product_table(){
      global $db;
      $sql =” SELECT p.id,p.isim,p.name,p.quantity,p.price,p.part_no,p.oem_ref,p.model,p.media_id,p.date,c.name”;
      $sql .=” AS categorie,m.file_name AS image”;
      $sql .=” FROM products p”;
      $sql .=” LEFT JOIN categories c ON c.id = p.categorie_id”;
      $sql .=” LEFT JOIN media m ON m.id = p.media_id”;
      $sql.= ” WHERE p.categorie_id = 1″;
      $sql .=” ORDER BY p.id ASC”;
      return find_by_sql($sql);

      }

      DEĞİŞİKLİK YAPMADAN ÖNCE KODLARINIZI YEDEKLEMEYİ UNUTMAYIN

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir