تقسييم النتائج على عدة صفحات
بدون مقدمات أكيد تعرفون أهمية تقسييم النتائج على عدة صفحات.
هناك عدة طرق في قواعد البيانات المختلفة ، و هذه طريقة بسيطة
و نعمل على جميع قواعد البيانات على حد علمي ..
لنبدأ بالفرضيات :
عندك جدول مليان بيانات في عمود معرف أسمه ID
تريد عرض 10 صفوف في الصفحة الواحدة و النتائج
مرتبة حسب العمود OrderByCol تصاعديا ، الجدول
أسمه MyTable
أول صفحة: Select TOP 10 Col1,Col2,....,ColN From MyTable Order By OrderByCol ASC -- الصفحة الثانية Select TOP 10 Col1,Col2,....,ColN From MyTable Where ID Not in (Select TOP 20 ID From MyTable Where Condition Order By OrderByCol ASC) Order By OrderByCol ASC -- الصفحة رقم N Select TOP 10 Col1,Col2,....,ColN From MyTable Where ID Not in (Select TOP 10*N ID From MyTable Where Condition Order By OrderByCol ASC) Order By OrderByCol ASC
قيمة N :
N= 2,3,4,......,عدد الصفحات
N يجب أن تكون أكبر من واحد
أذا كانت N=1
يجب أن تستخدم
TOP 0
عدد الصفوف في كل صفحة
عدد الصفوف: في جمل ال SQL السابقة يمكنك تغيير الرقم 10 إلى
العدد الي تبي ..
أذا كنت تعمل هذه الطريقة لتقسيم النتائج في لغة برمجة أو سكربت،
تحتاج إلى معرفة عدد البيانات الموجودة لمعرفة عدد الصفحات
هذي سهلة أكيد ..
كود MsSQL لأختبار الطريقة :
use tempdb Go If Exists (select name from sysobjects where name=N'pagging' and type='U') Drop Table pagging GO Create Table pagging( id int default 1 ) GO Declare @N int Set @N=1 While @N<=100 begin insert into pagging values(@N) set @N=@N+1 end GO Select TOP 10 ID from pagging Where Not ID in (Select TOP 50 ID from pagging Order by ID) Order by ID
