• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

SELECT last N row in sql with asp.net

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
رفقا من میخوام تو SQL Server تعداد N رکوردی که آخر از همه Insert شده رو بگیرم. چیکار کنم؟
میتونم با کرسر آخرین رکورد رو بگیرم و به ASP.NET انتقال بدم. اما اگه تعداد رکوردها زیاد باشه چجوری میشه از SQL Server به ASP.NET انتقال داد؟
 

Parham

Registered User
تاریخ عضویت
24 سپتامبر 2003
نوشته‌ها
1,042
لایک‌ها
2
اگر فرض کنیم که یک فیلد Autonumber به نام ID داشته باشید به این شکل میتونید N رکورد آخر رو بگیرید:
کد:
SELECT TOP N * FROM tblName ORDER BY ID DESC
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,775
لایک‌ها
70
سن
41
محل سکونت
نصف جهان
رفقا من میخوام تو SQL Server تعداد N رکوردی که آخر از همه Insert شده رو بگیرم. چیکار کنم؟
میتونم با کرسر آخرین رکورد رو بگیرم و به ASP.NET انتقال بدم. اما اگه تعداد رکوردها زیاد باشه چجوری میشه از SQL Server به ASP.NET انتقال داد؟

خودت جواب سوالت رو دادی !!!!

با stored procedur ها به راحتی میتونی یک table برگردونی
 

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
اگر فرض کنیم که یک فیلد Autonumber به نام ID داشته باشید به این شکل میتونید N رکورد آخر رو بگیرید:
کد:
SELECT TOP N * FROM tblName ORDER BY ID DESC

درسته اما این روش ناقصه. من تونستم با دستور MAX رکوردها رو از آخر به اول هرچقدر که بخوام بگیرم. حتی از وسط!
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
TOP N ناقص نیست ، در حیقیت چیزیه که در این موارد بیشتر استفاده میشه ، از هرجا هم که خواستی بگیری براش شرط میزاری مثلا between کاملا از وسط وسط میگیره بعد با ORDER BY هم سرتش میکنی و تموم میشه .

در ضمن استفاده از stored procedur کاتر پسندیده ای اه ولی اینجا مباحه که کوئری رو توی برنامه بنویسی یا نه چون به هرحال همون N تا رکورد رو بیشتر از sql server دریافت نمیکنی !
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,775
لایک‌ها
70
سن
41
محل سکونت
نصف جهان
بسیار خوب

syntax این دستور را ممنو میشوم اگر دوستان بدون در نظر گرفتن فیلدهای autonumber بنویسند !!!

حالا با MAX یا Between
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
بالاخره باید بر حسب یه چیزی سرتش بکنی که N تا اولیش رو بگیری ! مثلا بر حسب زمان ، تو بگو بر حسب چی میخوای مرتبش کنی !
 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,775
لایک‌ها
70
سن
41
محل سکونت
نصف جهان
برحسب هیچی !!!

یعنی هیچ چیزی که مشخص کننده درج شدن باشه نیست . نه زمان ، نه autonumber و نه چیز دیگه

من یک table دارم توش فقط ID و Name هستش

میخوام 10 تا ID و Name آخری رو بگیرم !!!

ضمنا بدون استفاده از کرسر ها !
 

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
برحسب هیچی !!!

یعنی هیچ چیزی که مشخص کننده درج شدن باشه نیست . نه زمان ، نه autonumber و نه چیز دیگه

من یک table دارم توش فقط ID و Name هستش

میخوام 10 تا ID و Name آخری رو بگیرم !!!

ضمنا بدون استفاده از کرسر ها !

یه دفعه بگو بدون استفاده از برنامه نویسی میخوام یه وب سایت بسازم دیگه!!!
این که نمیشه!
ببین اصلا داده هایی که میبینید در جدول به اون ترتیبی نیستند که می بینید اونا فقط اطلاعاتی پشت سرهم هستند که اونجوری نشون داده می شوند. هیچ امکانی وجود نداره که بتونی باهاش آخرین رکوردهارو بگیری مگر اینکه با یک روش خودت به sql server بگی که یک رکورد چه زمانی اینسرت میشه (همون auto number, ...)
من یه روش دارم:
select * from tablename where id > (select max(id)-10 from tablename)
 

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
TOP N ناقص نیست ، در حیقیت چیزیه که در این موارد بیشتر استفاده میشه ، از هرجا هم که خواستی بگیری براش شرط میزاری مثلا between کاملا از وسط وسط میگیره بعد با ORDER BY هم سرتش میکنی و تموم میشه .

در ضمن استفاده از stored procedur کاتر پسندیده ای اه ولی اینجا مباحه که کوئری رو توی برنامه بنویسی یا نه چون به هرحال همون N تا رکورد رو بیشتر از sql server دریافت نمیکنی !

من نگفتم TOP N ناقص هست گفتم این روش ناقص هست. که شما کاملش کردی.
 

aref1364

Registered User
تاریخ عضویت
23 جولای 2005
نوشته‌ها
395
لایک‌ها
1
TOP N ناقص نیست ، در حیقیت چیزیه که در این موارد بیشتر استفاده میشه ، از هرجا هم که خواستی بگیری براش شرط میزاری مثلا between کاملا از وسط وسط میگیره بعد با ORDER BY هم سرتش میکنی و تموم میشه .

در ضمن استفاده از stored procedur کاتر پسندیده ای اه ولی اینجا مباحه که کوئری رو توی برنامه بنویسی یا نه چون به هرحال همون N تا رکورد رو بیشتر از sql server دریافت نمیکنی !

ببینید ما یه متن طولانی داریم که باید تو SQL ذخیرش کنیم. اما بیشتر از یک مقدار رو نمیشه توی یک سطر ذخیره کرد و باید سطرهای زیادتری باشه. یه راهی بگید. ما مخلصیم.
میشه از relationship استفاده کرد؟
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
اگر مظورت اینته که از 4000 گاراکتر nvarchar بیشتر اه از ntext استفاده کن و یادت باشه که دیگه نیتونی از

where = "متن" استفاده کنی وباید از like استفاده کنی
 

balabala

کاربر قدیمی پرشین تولز
کاربر قدیمی پرشین تولز
تاریخ عضویت
22 می 2005
نوشته‌ها
8,362
لایک‌ها
5,745
سن
42
محل سکونت
یه خورده اونورتر
برحسب هیچی !!!

یعنی هیچ چیزی که مشخص کننده درج شدن باشه نیست . نه زمان ، نه autonumber و نه چیز دیگه

من یک table دارم توش فقط ID و Name هستش

میخوام 10 تا ID و Name آخری رو بگیرم !!!

ضمنا بدون استفاده از کرسر ها !
بچه ها این میشه بدون هیچی؟ فقط با کوئری؟
 
بالا