Bir alışveriş sitesine girip ürünleri listelerseniz önünüze o kadar fazla ve karışık veri gelebilir ki bu karmaşıklık içinden çıkamayıp sıralamalara başvurursunuz. Bazen cebinizdeki paraya göre sıralama yaparsınız, bazen de zamanınız bol olduğunda alfabetik sıralayıp tüm ürünleri incelersiniz. Ama çoğu durumda sıralama işlemi size zaman kazandırır ve ya belirli bir konuda anlık bilgiler edinmenizi sağlar.
Bu alışveriiş sitelerindeki ürünlerin de sql tablolarında tutulduğunu göz önünde bulundurursak burada bir sıralama işleminden bahsedebiliriz. İşte bu makalemizde de SQL'de sıralama işlemlerinin nasıl yapıldığından bahsedeceğim.
Konuya açıklarken SQL konusunda temel bilgilere sahip olduğunuzu düşünerek konuyu anlatacağım. Bu temel konular arasında da en azından SQL Select kullanımını bildiğinizi varsayacağım... Konuya odaklanabilmek için karmaşık sql sorgularından kaçınarak sadece sıralamanın nasıl yapıldığına odaklanacağım.
SQL sıralama işlemleri için SQL dilinde ORDER BY deyimi kullanılır. Bu deyimin aynı zamanda iki parametresi de olabilir. Bu parametreler ascending(ASC) ve descening(DESC) parametreleridir. Bu parametreler de sıralamanın artan ve azalan sırada sıralanacağını belirtmek için kullanılır. SQL veri tiplerini tablo tasarımından alarak veri tiplerine göre sıralamayı da otomatik yapar. Örneğin string yani metin sıralamasını alfabetik sıralama ile yaparken, rakamları da büyüklük ve küçüklüğüne göre sıralar.
NOT: Varsayılan değer olarak ORDER BY artan sırada sıralama yapar ve bu yüzden ASC kullanımı zorunlu değildir. Ama bir sorguda bir kaç kolona göre sıralama işlemi yapılacaksa hangi kolona göre artan, hangi kolona göre azalan sırada sıralama yapılacağı belirtilmelidir...
İsterseniz bu kısa anlatımdan sonra örnek üzerinden devam edelim. Örnek için İller tablosunu kullanacağım. İller tablosu yandaki küçük tablodur. Tabloda Il ID'si, İl Adı ve İl Kodu alanları tutuluyor. Gördüğüüz gibi şuanda iller isim sıralamasına göre sıralanmış durumda. Örnek olabilmesi aşısında bu tablo üzerinde tüm olabilecek sıralama sorgularını aşağıda yazmaya çalıştım.
1. İl ID'sine göre küçükten büyüğe sıralama
SELECT * FROM ILLER ORDER BY ID
2. İl ID'sine göre büyükten küçüğer sıralama
SELECT * FROM ILLER ORDER BY ID DESC
3. İl Adına göre alfabetik sırada sıralama
SELECT * FROM ILLER ORDER BY ADI
4. İl Adına göre ters alfabetik sırada sıralama
SELECT * FROM ILLER ORDER BY ADI DESC
5. İl Koduna göre göre küçükten büyüğe sıralama
SELECT * FROM ILLER ORDER BY KODU
6. İl Koduna göre büyükten küçüğer sıralama
SELECT * FROM ILLER ORDER BY KODU DESC
İsterseniz sıralama işleminde bir kaç kolonun birlikte kullanıldığı örneği de inceleyelim. Aslında bu tablo yapısı bir kaç kolonun birlikte kullanıldığı sıralama işlemi için uygun değil. Bunun nedeni ise ORDER BY deyiminde bir kaç kolon kullandığımızda önceliğin birinci yazılan parametreye verilmesidir. Birinci verilen kolona göre eşitlik sağlandığında sadece ikinci kolonun değerleri karşılaştırılır.
7. Önce il kodu göre büyükten küçüğesıralama, sonra da il adına göre alfabetik sıralama.
SELECT * FROM ILLER ORDER BY KODU DESC, ADI ASC
veya
SELECT * FROM ILLER
ORDER BY KODU DESC
ORDER BY ADI ASC
Umarım makalem faydalı olmuştur. Makalenin eksikleri ve anlamadığınız noktalarla ilgili bana yazabilirsiniz.
Yorumlar
Yorum Gönder