Sıralama İşlemi
Sonuç kümesindeki verileri istenilen kritere göre sıralamak için ORDER BY deyimini kullanacağız.
Bilgi: SQL ifadelerinde sorguları kuvvetlendirmek için çeşitli kalıplar kullanılır. Bu kalıplara deyim (clause) da denebilir.
ORDER BY Sözdizimi:
SELECT FROM
ORDER BY
Ürünler tablosundan alfabetik sıralı olarak ürün adlarını listeleyelim.
SELECT ProductName
FROM Products
ORDER BY ProductName;
Bu sorgunun diğer sorgularımızdan farkı, ürün isimlerine göre sıralandırma yapabiliyor olmasıdır. Tablo ismi belirtildikten sonra hangi kolona göre sıralandırma yapılmak isteniyorsa ORDER BY deyiminden sonra o kolonun adı belirtilir. Burada dikkat edilmesi gereken, ORDER BY deyiminin en sonda kullanılıyor olmasıdır.
Görüntülenmek istenen kolonlara göre sıralama yaptırılacağına göre, SELECT listemizde yer almayan bir kolona göre sıralama yaptırmak pek kullanışlı olmayacaktır.
Çoklu Kolonlara Göre Sıralama
Bazı durumlarda tek bir sıralama kriteri yeterli olmaz. Örneğin bir personel tablosunda soyada göre sıralanıp listenenen personelin bir de adına göre sıralanması istenebilir. Aynı soyada sahip işçiler için bu durum söz konusudur.
Çoklu kolona göre sıralama yapmak için, tıpkı çoklu kolon bilgilerini görüntülerken kolon isimleri arasına konulan virgüller gibi ORDER BY deyiminden sonra da kolonlar arasına virgül koymak gerekir.
Ürünler tablosunda ürün kodu, fiyatı ve ismini, önce fiyata göre, sonra da ürün adına göre görüntülemek isteyelim.
SELECT ProductName, UnitPrice
FROM Products
ORDER BY UnitPrice, ProductName;
Birden fazla kolona göre sıralama yapıldığı durumlarda, eğer ilk kritere göre sıralanan kayıtlarda aynı değere sahip kayıt varsa, ikinci kritere göre sıralama yapılır. Yani fiyatı 45 Ytl olan birden fazla ürün varsa, bu ürünler de kendi aralarında ürün adına göre sıralanacaktır.
Kolon Pozisyonuna Göre Sıralama
ORDER BY deyiminden sonra kolon isimlerini sıralamak yerine, kolonun pozisyonuna göre de sıralama yapılabilir.
Ürünler tablosunda ürün kodu, fiyatı ve ismini, önce fiyata göre, sonra da ürün adına göre görüntülemek isteyelim. Ancak sıralamada kolon adları yerine pozisyonları kullanalım.
SELECT ProductID, ProductName, UnitPrice
FROM Products
ORDER BY 2, 3;
ORDER BY 2, SELECT listesinde belirtilen ikinci kolon adına göre sıralama yapılacağı anlamına gelir. ORDER BY 2, 3 ifadesinin eşdeğeri,
ORDER BY UnitPrice, ProductName
ifadesidir.
Kolon pozisyonu belirterek yeniden kodlamadan uzakaşmış olunur. Ancak pozisyona karşılık gelen isimlere dönüp bakmak da bazı durumlarda oldukça zaman kaybettirebilir.
Sıralama Yönünün Belirtilmesi
Verilerin varsayılan sıralama yönü azdan çoğa artan (ascending) şekildedir. ORDER BY deyiminde hiçbir yön belirtilmezse bu artan olarak algılanır. Artan yönde sıralamak için ASC anahtar sözcüğü kullanılır. Azalan yönde (descending) sıralamak için ise DESC anahtar sözcüğü kullanılır.
Ürünler tablosunu fiyata göre azalan sırada listeleyelim.
SELECT ProductID, UnitPrice, ProductName
FROM Products
ORDER BY UnitPrice DESC;
Bu sorguda tabiki aynı değere sahip kayıtlar kendi aralarında sıralanma kriteri belirtilmeden rastgelen listelenmiştir.
Ürünler tablosunu fiyata göre azalan sırada, sonra da ürün adına göre sıralı listeleyelim.
SELECT ProductID, UnitPrice, ProductName
FROM Products
ORDER BY UnitPrice DESC, ProductName;
Bu sorguda aynı değere sahip kayıtlar kendi aralarında artan yönde sıralanmıştır.