MSSQL sayfalama işlemi

  • 11.9.2015
  • tayyipyetis
  • MSSQL

Merhaba, bu yazıda projelerimizde sıkça karşılaştığımız bir problem için kullanışlı bir çözümden bahsedeceğim. Herhangi bir kontrolde (Repeater, Gridview, Datalist, Listview vs.) veri sunum işlemi yaparken veri sayısı çoğaldıkça mutlaka sayfalama ihtiyacı ortaya çıkar çünkü hiçbir kullanıcı bir sayfada 100 kaydı birden görmek istemez bunun yerine 10 adet veri içeren 10 sayfalı bir gösterim çok daha kullanışlı olacaktır. Bu işlemi yapan çok fazla user kontrol ya da eklenti mevcut ama pratik olması açısından ben genelde sql içerisinden yapmayı tercih ediyorum. MSsql için örnek kullanım şu şekildedir.

WITH tablo AS (
SELECT ROW_NUMBER() OVER(ORDER BY id) as satirno, * FROM urunler
) SELECT * FROM tablo WHERE tablo.satirno BETWEEN 10 AND 20

burada püf nokta ROW_NUMBER() fonksiyonudur bu satır numarasını içeren yeni bir sütun oluşturur fakat bunun için OVER(ORDER BY id) ifadesi içinde hangi sütuna göre sıralama yapılacağını belirtmeniz gerekir. diğer önemli bir nokta ise row_number ile oluşturulan dinamik sütuna aynı tablo içerisinden erişemeyeceğiniz bunun için with işlemi ile sanal bir tablo oluşurulup onun içindeki satirno sütunu ile işlem yapılıyor. burada between operatörü ile hangi satırlar arasındaki verinin gösterileceğini belirtiyoruz. Tabii bu mssql için kullanım mysql'de bu işlem daha basit sadece LIMIT anahtar kelimesi ile hangi satırdan itibaren kaç verinin alınacağını belirterek kolayca halledebiliyorsunuz örneğin;

SELECT * FROM musteriler LIMIT 10, 50

yukarıdaki sorguda 10. satırdan itibaren 50 kaydın alınması isteniyor. Faydalı olması dileğiyle...

Mustafa Tayyip YETİŞ
Yazılım Geliştirme Uzmanı

Yorum Gönder

Diğer Makaleler

Etiketler