به نام خدا
با سلام
لطفا دوستان دستوری رو بگن که بشه با اون n رکورد آخر جدول رو خواند.
به نام خدا
با سلام
لطفا دوستان دستوری رو بگن که بشه با اون n رکورد آخر جدول رو خواند.
این دستور n رکرود اول رو می خونه !!
Select Top n
شما قبلش به صورتی که دوست داری بر حسب فیلد مورد نظر به صورت نزولی یا صعودی مرتب کن !!
خواستن ، توانتستن است !!!
هدف من از خواندن رکوردهای آخر این می باشد که من می خواهم به آخرین رکورد اضافه شده دست پیدا کنم.
جواب آقا امین کاملا درسته اما شما سوالت خیلی با اونچه که مد نظرت بود فرق می کرد. اگر فقط آخرین مقدار رو می خواهی می تونی از تابع MAX استفاده کنی. اگر برای داشتن یک فیلد کد می خواهی می تونی یک فیلد Auto increment در جدولت تعریف کنی.
کلا سوالت رو اگر دقیقتر مطرح کنی جواب دقیقتری می تونیم بدیم.
دوست عزيز چنانچه در جدول شما فيلدي وجود دارد كه خاصيت Identity آن True يا فعال است از طريق كوئري زير مي توانيد براي آن جدول همواره به آخرين مقدار دسترسي داشته باشيد
كد :
SELECT IDENT_CURRENT('Table Name') AS LastValue
موفق باشيد...
اگر فیلد ID ترتیب ورود داده ها باشد که از یک شروع شود برای n رکورد آخر چنین عمل می کنیم.
Select Top n
From Tbl_Test
Order By ID Desc
جدول را نزولی صورت می کنیم و n رکورد ابتدایی را بر می گردانیم.
موفق باشید
ضمن تشکر از دوستان
در جدول من برای فیلدی که می خواهم بدست آورم هیچ نظمی وجود ندارد
فکر کنید مثلا می خواهم آخرین دانشجویی که در یک مسابقه شرکت کرده را پیدا
کنم حالا در اینجا دیگه نظمی مطرح نیست و اصلا به تاریخ و زمان هم نمی شود
اطمینان کرد چون توسط کاربر قابل تغییر می باشد. در ضمن ممکن نفری که اول ثبت نام
کرده توسط کاربر حذف شود و دفعه بعد که مراجعه کرد نفر آخر می باشد پس می بینید
که هیچ نظمی وجود ندارد.
در ضمن این حالت ها همه یک مثال بود.
********************************************
به نظر شما در این صورت آیا عنوان تاپیک مشکل دارد؟
Select top 1 fildname from yourtable order by newid()--!\/|m
سلام
مطالب گفته شده برای موردی که
یا فیلد identity و یا یک فیلد تاریخ وجود داشته باشه جوابگو هست
در صورتیکه هیچکدوم از موارد فوق نباشه چطور میشه اینکار رو کرد؟
آیا sql تو این زمینه ناتوانه؟
با تشکر
با اجازه تمام اساتيد
اگر از sql 2005 يا sql 2008 استفاده مي كنيد بايد با استفاده از ranking functions يك فيلد شماره گذاري استفاده كنيد سپس اونو به صورت معكوس sort كنيد و حالا top n رو درخواست كنيد.
select top 5 row_number() over(order by order_col) as id,companyname,address from
(
select companyname,address,0 as order_col from northwind..Suppliers
) as t
order by id desc
سلام
آیا این فیلد runtime اضافه میشه و یا ..اگر از sql 2005 يا sql 2008 استفاده مي كنيد بايد با استفاده از ranking functions يك فيلد شماره گذاري استفاده كنيد سپس اونو به صورت معكوس sort كنيد و حالا top n رو درخواست كنيد.
در مورد کدتون بیشتر توضیح می دید؟
با تشکر
بله runtime اضافه مي شه يه فيلد ترتيبي هست كه بدون در نظر گرفتن نظم خاصي( براساس) داده هاي فعلي فيلد RANK رو اضافه مي كنه.
البته روشهاي ديگه يي هم براي rank دادن هست كه اينجا كاربرد نداره.
سلام
جناب salimim
تشکر
امکان داره در مورد اون کد(پست 8) بیشتر توضیح بدید ؟
و مورد بعد اینکه آیا میشه با استفاده از اون select نوشت که مثلا رکوردهای مابین رکورد 100تا200 رو برگردونه؟
با تشکر
اول جواب قسمت دوم!
بله شما بايد 2 تا select بزنيد كه يكيش تا 200 امي را نتخاب كنيد بعد بدون desc فش 100 امي رو-- اميدوارم خوب گفته باشم
و اما در مورد كدها
select top 5 row_number() over(order by order_col)
row_number يك فيلد ترتيبي ايجاد مي كنه كه بر اساس فيلد ذكر شده در over خواهد بود. از آنجائيكه ما هيچ ترتيبي رو مدنظر نداريم اونو بر اساس يك فيلد مجازي؟! كه توي همه ركوردها عدد صفر تعريف شده مرتب مي كنيم.
0 as order_col
همين!
سلام
تشکر
شما خوب گفتید ، اما من خوب متوجه نشدم ،امکان داره بیشتر توضیح بدیدشما بايد 2 تا select بزنيد كه يكيش تا 200 امي را نتخاب كنيد بعد بدون desc فش 100 امي رو-- اميدوارم خوب گفته باشم
اگه یه قطعه کد بزارید که عالی میشه
مورد بعد:
نحوه استفاده از کد رو بدرستی متوجه نشدم
اینطوری خطا میده
select top 5 row_number() over(order by order_col) as id,* from codخطا
order by id desc
این رو کجا باید بزارمMsg 207, Level 16, State 1, Line 1
Invalid column name 'order_col'.
0 as order_col
با تشکر
سلام
دوستان عزیز کسی می تونه راهنمایی کنه؟
با تشکر