Harun Reşit Zafer

bâki kalan bu kubbede bir hoş sadâ imiş

SQL 06: ORDER BY (Sıralama)

Schema SQL SELECT sorgusu ile çektiğimiz kayıtları (sonuç kümesini) sıralamak için ORDER BY anahtar kelimesini kullanırız. Bu sıralama belirtilen kolona göre yapılır. Ve varsayılan olarak artan (küçükten büyüğe) sıradadır. ORDER BY için sözdizimi (syntax – sintaks) aşağıdaki gibidir:

SELECT kolon_adı(ları)
FROM tablo_adı
ORDER BY kolon_adı(ları) ASC|DESC

Burada sıralamanın azalan (büyükten küçüğe) şekilde olmasını istiyorsak DESC anahtar kelimesini kullanırız. Artan şekilde olması için ASC yazmamız veya hiç bir şey yazmamamız yeterlidir.

Not: Bu arada diğer SQL derslerine buradan ulaşabilirsiniz

Örnek sorgularımız için kullanacağımız Uyeler tablosu:

uye_adi isim soyisim e-posta cinsiyet
hrzafer Harun Reşit Zafer [email protected] E
derya.z Derya Zaimoğlu [email protected] K
meryem1990 Meryem Arkadaş [email protected] K
eaydin Emir Aydın [email protected] E
denizeri Levent Denizeri [email protected] E

 

 SELECT isim, soyisim FROM uyeler ORDER BY isim
isim soyisim
Derya Zaimoğlu
Emir Aydın
Harun Reşit Zafer
Levent Denizeri
Meryem Arkadaş

Görüldüğü gibi sonuç kümesi isim kolonuna küçükten büyüğe göre sıralandı.

 SELECT isim, soyisim FROM uyeler ORDER BY soyisim DESC
isim soyisim
Derya Zaimoğlu
Harun Reşit Zafer
Levent Denizeri
Emir Aydın
Meryem Arkadaş

Bu sorgu ile de  sonuç kümesini soyisim kolonuna göre azalan (büyükten küçüğe) şekilde sıralamış olduk.

Aşağıdaki sorguyu da Personel tablomuz için yazalım:

per_no isim soyisim yas cinsiyet kent ulke maas
1 Ahmet Yılmaz 20 E Ankara Türkiye 2000
2 Mehmet Efe 22 E Bolu Türkiye 1800
3 Ayşe Can 23 K İstanbul Türkiye 2500
4 Fatma Ak 35 K Ankara Türkiye 2800
5 John Smith 45 E New York ABD 3500
6 Ellen Smith 40 K New York ABD 3000
7 Hans Müller 30 E Berlin Almanya 4000
8 Frank Cesanne 35 E Paris Fransa 3700
9 Abbas Demir 26 E Adana Türkiye 1500
10 Hatice Yılmaz 26 K İstanbul Türkiye 3000

Erkeklerden Türkiye’de olanları aldıkları maaşa göre artan şekilde sıralayan sorgu:

 SELECT * FROM personel WHERE cinsiyet='E' AND ulke='Türkiye' ORDER BY maas
per_no isim soyisim yas cinsiyet kent ulke maas
9 Abbas Demir 26 E Adana Türkiye 1500
2 Mehmet Efe 22 E Bolu Türkiye 1800
1 Ahmet Yılmaz 20 E Ankara Türkiye 2000

Görüldüğü gibi ORDER BY anahtar kelimesi her zaman sorgunun sonuna geliyor. Çünkü sorgunun kendisi sonuç kümesini belirlerken ORDER BY yalnızca bu sonuç kümesini sıralıyor.

Herkese Kolay Gelsin

Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedInPrint this pageEmail this to someone

9 Yorum

  1. Sağolun hocam

  2. hocam paylaşımlarınız için çok teşekkür ederim konuyu çok iyi özetlemişsiniz anlatım tarzınızda çok iyi başarılarınızın devamını dilerim :)

  3. klawyenize saglik, cok guzel anlatmisiniz… kisa ve oz olmus, kolay gelsin iyi calismalar….

  4. Hocam elinize sağlık güzel olmuş fakat bir yer kafama takıldı.
    en son yaptığınız örnekte kod kısmında yazılan Türkiye yazısı(kırmızı) tırnak içindemi olur normalde?

  5. çok teşekkürler çok işime yaradı emeğinize saglık

  6. karışık gelen ayları ocaktan aralığa sıralı nasıl getirebiliriz acaba? öyle fena takıldım ki bu konuya bir adım ilerleyemiyorum :(

    • Normalde bir aylar tablosu olur ve bu tabloda id değerleri ayların sırasına göre olur. {id:1 name:ocak} {id:2 name:şubat} gibi. Eğer böyle bir tablo yoksa siz oluşturabilirsiniz. Daha sonra da esas tablo ile bu tabloyu “name” alanı üzerinde join edersiniz ve OrderBy name dersiniz.

      “Select * from tablo1, aylar where tablo1.ay = aylar.name orderBy name” veya
      “Select * FROM taglo1 INNER JOIN aylar ON tablo1.ay=aylar.name orderBy name”

      gibi

      • Çok teşekkür ederim. Kafamda kıvılcımları çaktınız. hemen işe koyulmalı :)

Bir Cevap Yazın

E-posta adresiniz yayınlanmayacak

*

© 2016 Harun Reşit Zafer

Temayı tasarlayanAnders NorenYukarı ↑