SQL ile sayfalama, sql pagination
1.626 defa okundu
Konu: Raporlama
İçindekiler
İ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 |