ورود

View Full Version : انتخاب چند رکورد بین رکورد ها



fakhravari
چهارشنبه 02 آذر 1390, 01:38 صبح
با سلام
چطور میشه بین N رکورد ، رکورد های بین 10 تا 20 را نمایش داد. یا 3 تا 8 .....

Galawij
چهارشنبه 02 آذر 1390, 08:52 صبح
قبلاً در این لینک (http://barnamenevis.org/showthread.php?288288-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%D8%B1%DA%A9%D9%88%D8%B1%D8%AF-%D8%AF%D9%87%D9%85-%D8%AA%D8%A7-%D8%A8%DB%8C%D8%B3%D8%AA%D9%85-%D8%A7%D8%B2-%DB%8C%DA%A9-%D8%AC%D8%AF%D9%88%D9%84&highlight=row+number) در مورد سوال شما صحبت شده.

fakhravari
چهارشنبه 02 آذر 1390, 20:43 عصر
با سلام
اگر حالا بخواهیم فقط 5 رکورد آخر نمایش بده که با درستور select top میشه.
اگر بخواهیم بعد 5 پست اخر یعنی میشه 6 تا 10 رو نمایش بده چی کار باید کرد:گیج::متفکر: چون ما شماره رکورد نداریم که بازه تعیین کنیم

Galawij
چهارشنبه 02 آذر 1390, 21:56 عصر
دوست عزیز،
اصلاً متوجه سوالتون نمی شم!
خوب این تابع Select row_number () over(Order by dbo.TableName.IdTableName)as row_number به همه رکوردهای شما یک شماره اختصاص می دهد.

یوسف زالی
چهارشنبه 02 آذر 1390, 22:30 عصر
سلام.
شما چیزی مثل paging می خواهید.
می تونید شماره صفحه تون رو به SP پاس بدید و با استفاده از تابع row_number پستهاتون رو select کنید.
مثال:
with CTE as (select *, row_number() over(order by YourIdentityField desc) as Row from YourTbl) select * from CTE where Row between @Page * 10 and (@Page + 1) * 10 -- sql

fakhravari
چهارشنبه 02 آذر 1390, 22:34 عصر
با سلام
ببنید در دیتابیس کاربر به صورت پشت سر هم داده وارد میکنه.
من می خواهم 5 رکورد اخر پست را نمایش بدم که با دستور زیر این کار رو میکنم.SELECT TOP 5 * FROM Result_Meeting ORDER BY ID DESC
خوب الان می خواهم 10 پست قبل این 5 پست اخر بیارم

fakhravari
چهارشنبه 02 آذر 1390, 22:42 عصر
ممنون از همه
with CTE as (select *, row_number() over (order by TopicID desc) as row from B_Topics) select * from CTE where row between 1 and 5 ORDER BY TopicID DESC