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;
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;
1 |
SELECT adiSoyadi FROM ogrenci ORDER BY adiSoyadi ASC; |
Çı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;
1 |
SELECT adiSoyadi, dogumTarihi FROM ogrenci ORDER BY dogumTarihi; |
Çı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;
1 |
SELECT * FROM ogrenci ORDER BY id DESC; |
Çı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.
1 |
SELECT * FROM ogrenci ORDER BY id DESC LIMIT 10; |
Çıktımız;
Gördüğümüz gibi sorgu sanucunu LIMIT komutu ile 10 sonuç ile sınırladık.
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.
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