View Full Version : انتخاب 10 تا 10 رکوردها
rezabehboodi0098
جمعه 16 خرداد 1393, 18:42 عصر
با سلام
دوستان من میخاستم یه کوری بنویسم که اخبارم از زریق اون انتخاب کنم و میخام این اخبار 10 تا 10 انتخاب بشه یعنی اگه 30 تا خبر داشته باشم خبر 1 تا 10 رو با هم و خبر 11 تا 20 با هم
نمایش بده مشکل دستور زیر اینه که در صفحه ی دوم 20 اخبار و در صفحه ی سوم 30 خبر را میاره ولی من میخام تو هر صفحه فقط 10 خبر نمایش داداه بشه
SELECT TOP 20 * FROM newstable
لطفا یه راهنمایی بکنید
pezhvakco
شنبه 17 خرداد 1393, 13:09 عصر
سلام
اگر برای هر خبر یک ستون RowNumber داشته باشین (AutoNumber) و بخواهین اخبار از آخر به ابتدا (آخرین خبر بشه اولین ردیف در نمایش) متناسب با شماره صفحه (PageNumber)
شاید =>
SELECT *
FROM NewsTable
where (RowNumber Between
((Select Max(RowNumber) as expr1 From NewsTable) - (PageNumber * 10) )
and
((Select Max(RowNumber) as expr1 From NewsTable) - ((PageNumber - 1) * 10)))
order by id desc
mehdi.mousavi
شنبه 17 خرداد 1393, 13:25 عصر
با سلام دوستان من میخاستم یه کوری بنویسم که اخبارم از زریق اون انتخاب کنم و میخام این اخبار 10 تا 10 انتخاب بشه یعنی اگه 30 تا خبر داشته باشم خبر 1 تا 10 رو با هم و خبر 11 تا 20 با هم نمایش بده مشکل دستور زیر اینه که در صفحه ی دوم 20 اخبار و در صفحه ی سوم 30 خبر را میاره ولی من میخام تو هر صفحه فقط 10 خبر نمایش داداه بشهSELECT TOP 20 * FROM newstable لطفا یه راهنمایی بکنید
سلام.
برای این کار راههای زیادی وجود داره، که ساده ترینش (اگر اشتباه نکنم) در SQL Server 2012 معرفی شد.
اگر از SQL Server 2012 به بعد استفاده می کنید، می تونید بدین شکل عمل کنید:
SELECT * FROM newstable
ORDER BY NewDate DESC
OFFSET 0 ROWS
FETCH NEXT 10 ROWS ONLY
کد بالا، 10 رکورد ابتدایی از صفحه اول رو بهتون میده. اگر اون 0 رو 1 کنید، دومین 10 رکورد رو خواهید گرفت و ...
موفق باشید.
amir20611
شنبه 17 خرداد 1393, 15:32 عصر
سلام ، و اگر از
SQL Server 2012
استفاده نمی کنید
Declare @Top int = 10 , @Start int = 10
SELECT top (@Top) * FROM newstable where id not in (SELECT top (@Start) id FROM newstable order by id DEsc) order by id DEsc
شرایط هر دو سلکت باید یکی باشه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.