ANASAYFA | BLOG | SORU CEVAP | REFERANSLARIM | DOWNLOAD | HAKKIMDA | İLETİŞİM | ARAMA
SQL de SIRALAMA YAPMAK - ORDER BY KULLANIMI

ORDER BY komutu verilerin belli bir sıraya göre çekilmesini sağlar. ORDER BY komutu her zaman SQL ifadesinin en sonunda bulunur. ORDER BY komutu ile birlikte iki anahtar kelime kullanabiliriz, Bunlar;

  • ASC : A dan Z ye, eksi(-) sonsuzdan artı(+) sonsuza, küçükten büyüğe
  • DESC : Z den A ya, artı(+) sonsuzdan  eksi(-) sonsuza, büyükten küçüğe

Bu iki ifadeden birisi kullanılmıyorsa default olarak ASC kullanılıyor kabul edilir. O yüzden ASC sıralama yapmak ASC ifadesini kullanmasak da olur fakat DESC sıralama yapmak istiyorsak kesinlikle kullanmalıyız. Genel Olarak ifade etmek gerekirse şu şekilde kullanıldığını söyleyebiliriz

SELECT [Kolon isimleri] FROM [Tablo isimleri] ORDER BY [sıralanacak kolonlar] [ASC|DESC]

FK-gizle

Şimdi bunu bir örnekle incelersek

SELECT * FROM tbKisiler ORDER BY ad

id ad soyad tel sehir yas dogumTarihi
1 Cahit ÇEÇEN 05411231212 MARDİN 21 01.01.1991 00:00:00
2 Emre ÜNAL 05543120101 İSTANBUL 19 17.12.1993 00:00:00
3 Faruk ÜNAL 05369333629 ESKİŞEHİR 21 11.08.1991 00:00:00
4 Fatih KAYA 05351133055 ANKARA 22 06.08.1990 00:00:00
8 Necip ULU 05057654321 ANKARA 37 21.03.1976 00:00:00
9 Osman HIZLI 05067891234 AKSARAY 33 11.07.1980 00:00:00
10 Osman ÜNAL 03127775533 ANKARA 67 27.09.1946 00:00:00
11 Özgü ADEM 05556677880 ŞANLIURFA 21 15.06.1991 00:00:00

Tablomuz kişilerin adına göre alfabetik olarak sıralanmıştır, ASC yada DESC kullanmadığımız için default olarak ASC kabul edilmiştir. Şimdi birde DESC ile aynı verileri çekelim

SELECT * FROM tbKisiler ORDER BY ad DESC 

id ad soyad tel sehir yas dogumTarihi
11 Özgü ADEM 05556677880 ŞANLIURFA 21 15.06.1991 00:00:00
9 Osman HIZLI 05067891234 AKSARAY 33 11.07.1980 00:00:00
10 Osman ÜNAL 03127775533 ANKARA 67 27.09.1946 00:00:00
8 Necip ULU 05057654321 ANKARA 37 21.03.1976 00:00:00
4 Fatih KAYA 05351133055 ANKARA 22 06.08.1990 00:00:00
3 Faruk ÜNAL 05369333629 ESKİŞEHİR 21 11.08.1991 00:00:00
2 Emre ÜNAL 05543120101 İSTANBUL 19 17.12.1993 00:00:00
1 Cahit ÇEÇEN 05411231212 MARDİN 21 01.01.1991 00:00:00

Şimdi birde yaşlarına göre sıralattıralım, yaşı büyük olandan küçük olana [DESC] olacak şekilde sıralamak istersek kodu şu şekilde olacaktır.

SELECT * FROM tbKisiler ORDER BY yas DESC

id ad soyad tel sehir yas dogumTarihi
10 Osman ÜNAL 03127775533 ANKARA 67 27.09.1946 00:00:00
8 Necip ULU 05057654321 ANKARA 37 21.03.1976 00:00:00
9 Osman HIZLI 05067891234 AKSARAY 33 11.07.1980 00:00:00
4 Fatih KAYA 05351133055 ANKARA 22 06.08.1990 00:00:00
3 Faruk ÜNAL 05369333629 ESKİŞEHİR 21 11.08.1991 00:00:00
1 Cahit ÇEÇEN 05411231212 MARDİN 21 01.01.1991 00:00:00
11 Özgü ADEM 05556677880 ŞANLIURFA 21 15.06.1991 00:00:00
2 Emre ÜNAL 05543120101 İSTANBUL 19 17.12.1993 00:00:00

Bu şekilde diğer kolonlara göre de sıralama yaptırabiliriz, aynı şekilde doğum tarihlerine göre de sıralama yapmamız mümkün.
 

BİRDEN FAZLA KOLON ÜZERİNDE SIRALAMA YAPMAK

SELECT sorgularımızda sıralama yaparken istersek bütün kolonları dahi aynı anda kullanabiliriz. Bunu kullanma şeklimiz ise ORDER BY idafesinden sonra sıra ile aralarında virgül olması şartı ile sırala yapacağımız kolonları listeleyebiliriz, Örnek olarak aşağıdaki sorguyu inceleyecek olursak, 

SELECT * FROM tbKisiler ORDER BY soyad ASC, yas DESC

id ad soyad tel sehir yas dogumTarihi
11 Özgü ADEM 05556677880 ŞANLIURFA 21 15.06.1991 00:00:00
1 Cahit ÇEÇEN 05411231212 MARDİN 21 01.01.1991 00:00:00
9 Osman HIZLI 05067891234 AKSARAY 33 11.07.1980 00:00:00
4 Fatih KAYA 05351133055 ANKARA 22 06.08.1990 00:00:00
8 Necip ULU 05057654321 ANKARA 37 21.03.1976 00:00:00
10 Osman ÜNAL 03127775533 ANKARA 67 27.09.1946 00:00:00
3 Faruk ÜNAL 05369333629 ESKİŞEHİR 21 11.08.1991 00:00:00
2 Emre ÜNAL 05543120101 İSTANBUL 19 17.12.1993 00:00:00

...ORDER BY soyad ASC, yas DESC
ifadesinden dolayı sıralamamız öncelikle  soyad a göre a dan z ye, yas a göre ise büyükte küçüğe doğru sıralanmıştır. Tablomuzu incelersek ÜNAL soyadına sahip kişiler bir arada, bunlar arasında ise yaşı büyük olan en üstte, küçük olan ise en altta listelenmiştir. Bu örnekte de gördüğümüz gibi sıralama yapacağımız her kolondan sonra ayrı ayrı ASC yada DESC  ifadelerini kullanabiliriz.
 

SORGUDA OLMAYAN KOLONLARI KULLANARAK SORGULAMA YAPMAK

Üstteki sorgularımızda * ile bütün kolonları çekerek çektiğimiz kolonlar arasında sıralama yapmıştık. Sorgularımızda bütün kolonları çekmesek dahi çekmediğimiz kolonları kullanarak da sorgumuzu çalıştırabiliriz. Mesela üstteki sıralamanın aynısını soyad ve yas kolonunu kullanmadan çekelim. Kişilerin adının ve şehirlerinin çekildiği fakat sıralamanın yas ve soyada göre olduğu sorgu için;

SELECT ad, sehir FROM tbKisiler ORDER BY soyad ASC, yas DESC

ad sehir
Özgü ŞANLIURFA
Cahit MARDİN
Osman AKSARAY
Fatih ANKARA
Necip ANKARA
Osman ANKARA
Faruk ESKİŞEHİR
Emre İSTANBUL

Gördüğünüz gibi üstteki sorgudaki kişilerle bu sorgudaki kişiler aynı sıraya göre listelenmiş olup bu sorguda sıralama yapılan kolonlar kullanılmamıştır.
 

KOLON NUMARASINA GÖRE SIRALAMA YAPMAK

Sorgularımızda sıralama yaparken kolon numarasına göre de sıralama yapmamız mümkün, ORDER BY ifadesinden sonra sıra ile hangi kolonlar üzerinde sıralama yapacağımızı numara belirterek yazabiliriz. İlk kolonun numarası 1den başlamakta ve sağa doğru gittikçe 1er 1er artmaktadır.

Kolon1 Kolon2 Kolon3 Kolon4 Kolon5
veri1 veri2 veri3 veri4 veri5

Bir önceki başlıkta sorguda olmayan kolona göre sıralama yapabileceğimizi belirtmiştim fakat bu şekilde kolon numarasına göre sıralama yapacağımızda tabloda olmayan kolona göre sıralama yapamayız. Sıralama veritabanındaki sıraya göre değil, sorgumuzdaki kullandığımız sıraya göredir, Örneğin;

SELECT sehir,soyad,ad,yas FROM tbKisiler ORDER BY 2 DESC,4

1-SEHİR 2-SOYAD 3-AD 4-YAS
İSTANBUL ÜNAL Emre 19
ESKİŞEHİR ÜNAL Faruk 21
ANKARA ÜNAL Osman 67
ANKARA ULU Necip 37
ANKARA KAYA Fatih 22
AKSARAY HIZLI Osman 33
MARDİN ÇEÇEN Cahit 21
ŞANLIURFA ADEM Özgü 21

Gördüğünüz gibi SELECT ifadesine kolonları hangi sıraya göre yazarsak ORDER BY ifadesinde kullanacağımız sıralama da ona göre şekilleniyor. Bu şekilde kolon numarasına göre sıralandırma yapmak sağlıklı bi yöntem değil, o yüzden tavsiye etmiyorum, en güvenilir yol en başta anlattığım gibi kolon isimleri ile sıralandırma yapmak.




Diğer Yazılarımdan Seçmeler...