Ağustos 05, 2010

Oracle Rownum+Order By ile sıralama

Oracle 'da çekeceğimiz sorguların satır sayısını sınırlandırmak için ROWNUM kullanırız.
Select * from table where rownum<= 20
sorgusu bize ilk gelen 20 kaydı listeler.Eğer bir kritere göre sıralama yapıp satır sayısını sınırlandırmak istersek yani order by kullanırsak;
Select * from personel where rownum<=20 order by personeladi desc 

dediğimizde bize dönen sonuç hatalı olacaktır.Yani sorgu bize 20 satırlık bir sonuç dönderecektir ancak bu 20 satırlık sonuc bizim istediğimiz gibi personel adına göre Z den A ya sıralanmış ilk 20 kaydı getirmeyecektir.
Burada bize dönen sonuç "select * from personel where rownum<=20" den dönen sonucun personel adına göre sıralanması olacaktır ki bu da bizim istediğimiz sonuç değildir.Burada sorgu ile ilk olarak rownum işlemi ardından order by işlemi yapılmaktadır.Biz ise önce order by ardından rownum yapmasını istiyoruz.
"select * from personel order by personel_adi (where) rownum<=20" sorgusunu çalıştırmak istediğimizde uygun olmayan sql hatası verecektir.Bunu yapabilmek için içiçe sorgu yazmamız gerekmektedir.
Select * from (select * from personel order by personel_adi desc) rownum<=20
bize istediğimiz sonucu dönderecektir.

Hiç yorum yok:

Yorum Gönder

System.Text.Json.JsonException hatası - cycle or if the object depth is larger than the maximum allowed depth of 32.

 Eğer .net'te aşağıdaki hatayı alıyorsanız; " A possible object cycle was detected which is not supported. This can either be due t...