SQL ile sayfalama, sql pagination

SQL ile sayfalama, sql pagination

İnternet sayfalarında tablo gibi birçok kayıt listeleme yapılması halinde sayfa sayfa (paging) halinde gelir. Böylece internet sayfası çok hızlı yüklenir. İnternet programcıları sayfalama (paging) işlemini kullandıkları yazılım dili veya kütüphanesi sayesinde yapabilirler. Ancak bazı durumlarda SQL ile sayfalama yapma ihtiyacı doğabilir. MS SQL ile paging (sayfalama) yapılmak istenirse aşağıda bulunan iki sorgudan herhangi biri kullanılabilir.

Öncelikle bir veri seti için geçici bir tablo oluşturalım. SQL veri seti aşağıdaki linkte TSQL kodu olarak verilmiştir.

Şehirler SQL Veri Seti Linki burada bulunan sql kopyanıp kullanılabilir.

Oluşturulan tablo bir kısmı aşağıdaki gibidir.

SELECT * FROM #TEMP

PLAKA KODU TELEFON ALAN KODU ŞEHİR BÖLGE
01 322 ADANA AKDENİZ BÖLGESİ
02 416 ADIYAMAN GÜNEYDOĞU BÖLGESİ
03 272 AFYONKARAHİSAR EGE BÖLGESİ
04 472 AĞRI DOĞU ANADOLU BÖLGESİ
05 358 AMASYA KARADENİZ BÖLGESİ
06 312 ANKARA İÇ ANADOLU BÖLGESİ
07 242 ANTALYA AKDENİZ BÖLGESİ
08 466 ARTVİN KARADENİZ BÖLGESİ
09 256 AYDIN EGE BÖLGESİ
10 266 BALIKESİR MARMARA BÖLGESİ

İstenilen sayıda kayıt ve istenilen sayfanın gelmesi için parametrik olarak değer atanabilir.

---ROWS FETCH İLE SAYFALAMA
DECLARE @KAYITSAYISI int
DECLARE @SAYFA int
SET @KAYITSAYISI = 5
SET @SAYFA = 2

SELECT ILKOD,SEHIR,BOLGE FROM #TEMP
ORDER BY ILKOD
OFFSET @KAYITSAYISI * (@SAYFA - 1) ROWS FETCH NEXT @KAYITSAYISI ROWS ONLY;

---ROW NUMBER İLE SAYFALAMA
DECLARE @ILKKAYIT INT
DECLARE @SONKAYIT INT
SET @ILKKAYIT = 6
SET @SONKAYIT = 10

SELECT ILKOD,SEHIR,BOLGE
FROM
(SELECT ILKOD,SEHIR,BOLGE, ROW_NUMBER() OVER (ORDER BY ILKOD) AS SIRA
FROM #TEMP) AS SEHIRLER
WHERE SIRA >= @ILKKAYIT AND SIRA <= @SONKAYIT
ORDER BY ILKOD

Sorgu Sonucu:

ILKOD SEHIR
BOLGE
06 ANKARA IÇ ANADOLU BÖLGESI
07 ANTALYA AKDENIZ BÖLGESI
08 ARTVIN KARADENIZ BÖLGESI
09 AYDIN EGE BÖLGESI
10 BALIKESIR MARMARA BÖLGESI


İlgili Yazılar