MsSql ile .Net’ de sayfalama (paging) yapmak
Ben, sizlere sayfalama yapmak için 2 farklı mssql kodu yazacağım ama bu kodları anlatmadan önce, mysqlde bu iş nasıl yapılıyor ona bakmak gerek. Çünkü benim yazacağım bir mssql kodu mysqldekine benzer yapıda olacaktır.
Mysql’de sayfalama yapmak için LIMIT kelimesini kullanmak yeterlidir.
Örnek mysql komutu yazarsak ;
SELECT * FROM uye LIMIT 0,10
yukardaki kodu çalıştırdığımızda bize ilk 10 sıradaki kaydı getirecektir. ve limit değerlerini değiştirerek mesela 10,20 yapsak bize 10 la 20 arasındaki verileri getirecektir.
Mssql de ise mysqldeki gibi limit gibi komutu olmadığı için bu işi biraz farklı yoldan yapmamız gerekecek.
1. MsSQL Komutu :
SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY id ASC) AS Row, uye.* FROM uye) AS Row_Tablo WHERE Row_Tablo.Row BETWEEN 10 AND 20
2. Sql cümleciğine göre anlaşılması ve kullanımı son derece daha kolay diyebilirim. Yukarıdaki sql cümlesinde “ROW_NUMBER()” adlı sql fonksiyonu sayesinde satır numaralarını sırası ile yazdırıyoruz. Aşağıdaki resimde “Row” ve “id” adlı sütunlarına bakarsanız ne demek istediğimi anlarsınız 🙂
Satır numarasını aldıktan sonra işimiz daha da kolay artık. Bundan sonra mysql deki LIMIT kavramının bir benzerini yapıp paging olayını kolaylık yapabileceğiz. “WHERE Row_Tablo.Row BETWEEN 10 AND 20” WHERE cümleciği ile “Row” sütununda yazan 10 ile 20 arasındaki değerleri alacağız. Eğer biz ilk 10 değeri almak isteseydik “WHERE Row_Tablo.Row BETWEEN 0 AND 10” yazacaktık.
Bu kadar basit.Şimdi sıra diğer bir yönteme geldi. Bu sql cümleceği daha uzun ve ilk yönteme göre daha komplike haldedir.
2. MsSQL Komutu :
SELECT TOP 20 * FROM uye WHERE (id NOT IN ( SELECT TOP 10 id FROM uye ))
Yukarıdaki kodu açıklamak istersek eğer, “SELECT TOP 20 * FROM uye” sql komutunda bize ilk 20 kaydı getirecektir. Sql komutunun devamına bakıcak olursak eğer, ” SELECT TOP 10 id FROM uye ))” burada ise ilk 10 kaydın sadece id numaralarını getiriyoruz ve bu iki sql komutunu ” ( id NOT IN (” ile bağlıyoruz. Yani sql cümlesi bize ilk 20 kaydı getir ancak ilk 10 kayıt hariç. Bu sql cümlesi bizim için 2. sayfadaki kayıtları dönderecektir. Biz ilk sayfadaki verleri isteseydik eğer, ilk sql deki TOP 20 yerine TOP 10, ikinci sql cümlesindeki TOP 10 yerine TOP 0 ‘ ı yazacaktık.
Benim fikrimi soracak olursanız tabikide ilk yöntem daha iyi olacaktır haliyle ama 2. yöntemi kullanmak isteyenlerde onu kullanabilir. Zaten bizim için sonuç aynı olacaktır 🙂
Eğer başka fikri veya yöntemi olan varsa bu sayfadan paylaşabilir 🙂 Birçoğumuzun (elbette ben de varım) ufkunuda genişletmiş olur hem 🙂
Örnek veritabanını indirmek için tıklayın.
2 yorum bulunmaktadır - “MsSql ile .Net’ de sayfalama (paging) yapmak”
Yorum Yapın
Etiketler
Son Yazılar
- Uzak sunucuda bulunan android cihaz ile otomasyon
- Mac’ de çoklu Java versiyon yönetimi
- İş yarar docker komutları
- Eski branchlerin git’ den silinmesi
- Kubernetes Süresi Dolmuş Sertifikaları Yenilemek
Son Yorumlar
- Hosting koşuşturması için
- Garanti Sanal Pos Kurulumu, Sorunlar ve Çözümler için
- Visual Studio Toolbox’a component(bileşen) eklenmesi için
- “File is too large for destination file system” hatasını gidermek için
- Php’de UTF-8 Türkçe karakter sorunu ve çözümü için
Bağlantılar
Arşivler
- Kasım 2021
- Eylül 2021
- Ağustos 2021
- Temmuz 2021
- Aralık 2020
- Kasım 2020
- Ekim 2020
- Eylül 2020
- Kasım 2017
- Mayıs 2017
- Mart 2017
- Şubat 2017
- Ocak 2017
- Nisan 2015
- Aralık 2014
- Mayıs 2014
- Eylül 2013
- Haziran 2013
- Şubat 2013
- Kasım 2012
- Ekim 2012
- Eylül 2012
- Mart 2012
- Şubat 2012
- Ocak 2012
- Aralık 2011
- Kasım 2011
- Ekim 2011
- Eylül 2011
- Temmuz 2011
- Haziran 2011
- Mayıs 2011
- Mart 2011
- Ocak 2011
- Aralık 2010
- Kasım 2010
- Ekim 2010
- Eylül 2010
- Ağustos 2010
- Temmuz 2010
- Haziran 2010
- Mayıs 2010
- Nisan 2010
- Mart 2010
- Şubat 2010
- Ocak 2010
- Haziran 2009
- Mayıs 2009
- Nisan 2009
- Mart 2009
İyi peki tamam çok güzel ama gelelim id numarası sıra ile gitmiyorsa yani demek istediğim şu auto ile tanımlanmış id numaralı satırlardan bir kaçını sildik ve arada boş idler oluştu veya like kullanıyoruz aramayı %herseyOlabilir% ile yaptık içinde geçen id’ler 15,35,99,1548,3058 bu durumda nasıl LIMIT tanımlarız ?
Aslında bir örnek veri yapıp deneseydiniz sonucunu görebilirdiniz. Yazılan sql komutu id bağlantılıdır fakat satırlar arasında olmayan veriler bizi ilgilendirmemekte. Yani işin kısası sorun bulunmamakta.