ورود

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

شرایط هر دو سلکت باید یکی باشه