Serkan Ayyıldız

Meraklı bir yazılım uzmanı...

SQL Order By ile Verileri Listeleme

SQL veritabanı uzmanlarına ve adaylarına selam :)

Önceki veritabanı programlama makalemizde top deyimi ile select sorgusundan gelen kayıtların ilk x tanesini çekmeyi öğrenmiş ve birkaç pratik uygulama gerçekleştirmiştik.Bu makalemizde ise kayıtları istediğimiz kriterlere göre listelemeyi öğreneceğiz.

SQL'de select sorgusuyla kayıt listelerken varsayılan olarak kayıtların veritabanına eklenme sırasına göre sıralama gerçekleştirilir,bunu zaten select sorgusunun çalıştırılma esnasında gelen kayıtların ID değerinden de görebiliyoruz ancak bu sizi ID değerine göre listelediği konusunda yanıltmasın çünkü veritabanı select sorgularında varsayılan olarak kayıtların eklenme tarihleri varsayılır.

Peki kayıtların eklenme zamanına göre değilde istediğimiz kriterlere göre kayıtları sıralama yaptırsak nasıl olur?
Bence gayet güzel olur :)

Veritabanından kayıtları belli bir kritere göre listelemek için "order by" (e göre sırala) sözcükleri kullanılır ve bu sözcük select sorgusunun devamı niteliğindedir.Order By deyiminin sorgu formatı ise:

select * from Tablo order by Kolon

veya

select Kolon1,Kolon2,Kolon3... from Tablo Order By KolonX 

şeklindedir.Konuyu örneklerle devam ettirmek için şimdi SQL Server Management Studio'yu açıp örnek veritabanımız
olan BakkalDB ile alt kategorileri listeleyelim:

sql-select-sorgusu

Bu zaten daha önce öğrendiğimiz basit select sorgusuydu ve sorgu sonucunda veriler veritabanına eklenme sırasına
göre listelendi ancak biz listeleme sırasını alt kategorinin adına göre listelenmesini istiyorsak order by
deyimini kullanalım:

sql-order-by

ve şimdi verilerin listesi artık alt kategoriye göre alfabetik bir sıraya göre listeleniyor,sorgumuzu tekrar değiştirelim
ve bu defa da KategoriID kolonuna göre listeleyelim:

sql-select-order-by-sorgusu

Şimdiyse KategoriID'sine göre sayısal sırayla verileri çağırdık.

Örneklerimize yine devam edeceğiz ama şimdi yeni bir şey daha öğreneceğiz: verileri ters listeleme..Verileri tersten listelemeden kastım order by ile belli bir kolona göre gelen listeyi baş aşağı listelemeyi öğreneceğiz.
Kafanızda daha somut bir şekilde konuyu anlatmak gerekirse az önce alt kategori adına göre alfabetik biçimde
(a dan z ye) getirdiğimiz listeyi ters alfabetik (z den a ya) doğru listelemeyi öğreneceğiz.

Kendimi ifade etmekte zorlanıyor muyum ne, hep uzun cümleler kuruyorum nedense :))

Evet, SQL'de veri listesini tersten sıralamak için order by sözcüğünün yanına descending (azalan) sözcüğünün 
kısaltılması olan "desc" sözcüğünü eklememiz yeterli, o halde sorgumuzun formatı:

select * from Tablo Order By Kolon desc

ya da

select Kolon1,Kolon2,Kolon3.. from Tablo Order By Kolon desc

olacak.Mesela az önce bahsettiğim alt kategorileri ters alfabetik olarak sıralayalım:

sql-order-by-desc

Böylece verilerimiz artık z'den a'ya olacak şekilde ters alfabetik olarak listeleniyor.

Gelelim sorgumuzu biraz daha zorlaştırmaya :) Veritabanı sorgulama demek öyle basit birkaç SQL sorgusu demek değildir o yüzden mümkün olduğunca karmaşık sorgular oluşturarak daha spesifik verilere ulaşmayı amaçlar.Bu yüzden veritabanı sorgulama ve programlama konularında uzmanlaşmak istiyorsanız bol bol karmaşık sorgularla pratik yapmanız gerekmektedir.

Bu örneğimizde önceki makalemizde öğrendiğimiz verilerin ilk x kadarını listelemeyi sağlayan top sorgusuyla birlikte
order by ve order by desc sorgularını birlikte kullanmayı öğreneceğiz.

Yapmak istediğimiz şu olsun: Veritabanındaki müşterilerin isimlerini tersten sıralayarak ilk 10 tane kaydı listeleyiniz..
Eğer SQL sorgulama konusunda henüz yeniyseniz yukarıdaki istek biraz gözünüzü korkutabilir ancak korkmanıza hiç
gerek yok çünkü adım adım nasıl yapıldığını öğreneceğiz şimdi :)

İlk yapmamız gereken bizden temel olarak ne istendiğidir ve diyor ki müşterilerin isimleri.. hemen basit bir select
sorgusu ile müşteriler tablosundan müşterilerin isimlerini çekiyoruz:

select-sorgusu

Müşterilerin isimlerini çağırdık ve bizden istenene tekrar bakıyor ve ilk 10 kaydı istiyor o halde sorgumuza "top 10"
deyimini kuralına uygun olarak yazıp sorguyu çağırıyoruz:

sql-top-sorugusu

Son olarak bizden isimleri z'den a'ya olacak şekilde ters alfabetik olarak listememiz isteniyor, demek ki "order by desc"
sözcüklerini yazıp sorgumuzu tamamlıyoruz:

sql-top-order-by-sorgusu

Yazdığımız bu sorgu ile istenen veri listesini tam olarak çağırmış oluyoruz,gördüğünüz gibi veritabanı sorgulama konusu
ilk başlarda biraz zor gibi gelse de aslında gayet kolay ve eğlenceli bir konu diyebilirim.Gerçi bu sorgumuz iş dünyasında
veritabanı uzmanından istenen karmaşık sorgular arasında çok basit kalabiliyor ama bi yerden öğrenmeye başlamak gerekiyor :)

Bir SQL makalemizde daha sona geldik,yayında ve yapımda emeği geçen bana teşekkür ettiğinizi düşünüyor hoşçakalın diyorum :)


Bir yorum bırak E-posta adresiniz yayınlanmayacaktır.

Menu