PDA

View Full Version : سوال: خواندن n رکورد آخر جدول



mc_laren
دوشنبه 27 آبان 1387, 22:47 عصر
به نام خدا
با سلام
لطفا دوستان دستوری رو بگن که بشه با اون n رکورد آخر جدول رو خواند.

amin_alexi
سه شنبه 28 آبان 1387, 07:50 صبح
این دستور n رکرود اول رو می خونه !!
Select Top n
شما قبلش به صورتی که دوست داری بر حسب فیلد مورد نظر به صورت نزولی یا صعودی مرتب کن !!

mc_laren
سه شنبه 28 آبان 1387, 17:53 عصر
هدف من از خواندن رکوردهای آخر این می باشد که من می خواهم به آخرین رکورد اضافه شده دست پیدا کنم.

رضا جاسبی
سه شنبه 28 آبان 1387, 22:09 عصر
جواب آقا امین کاملا درسته اما شما سوالت خیلی با اونچه که مد نظرت بود فرق می کرد. اگر فقط آخرین مقدار رو می خواهی می تونی از تابع MAX استفاده کنی. اگر برای داشتن یک فیلد کد می خواهی می تونی یک فیلد Auto increment در جدولت تعریف کنی.
کلا سوالت رو اگر دقیقتر مطرح کنی جواب دقیقتری می تونیم بدیم.

mbm124
سه شنبه 28 آبان 1387, 22:19 عصر
جواب آقا امین کاملا درسته اما شما سوالت خیلی با اونچه که مد نظرت بود فرق می کرد. اگر فقط آخرین مقدار رو می خواهی می تونی از تابع MAX استفاده کنی. اگر برای داشتن یک فیلد کد می خواهی می تونی یک فیلد Auto increment در جدولت تعریف کنی.
کلا سوالت رو اگر دقیقتر مطرح کنی جواب دقیقتری می تونیم بدیم.
سلام مگر تابع max براي بدست آوردن بزرگترين مقدار نمي باشد با تشكر

kashaneh
سه شنبه 28 آبان 1387, 22:49 عصر
دوست عزيز چنانچه در جدول شما فيلدي وجود دارد كه خاصيت Identity آن True يا فعال است از طريق كوئري زير مي توانيد براي آن جدول همواره به آخرين مقدار دسترسي داشته باشيد

كد :


SELECT IDENT_CURRENT('Table Name') AS LastValue

موفق باشيد...

SYNDROME
چهارشنبه 29 آبان 1387, 06:31 صبح
اگر فیلد ID ترتیب ورود داده ها باشد که از یک شروع شود برای n رکورد آخر چنین عمل می کنیم.


Select Top n
From Tbl_Test
Order By ID Desc

جدول را نزولی صورت می کنیم و n رکورد ابتدایی را بر می گردانیم.
موفق باشید

linux
چهارشنبه 29 آبان 1387, 18:55 عصر
به نام خدا
با سلام
لطفا دوستان دستوری رو بگن که بشه با اون n رکورد آخر جدول رو خواند.
یک فیلد از نوع datetime اضافه کن ، مقدار پیش فرض را هم getdatet() بگذار بعد می توانی به راحتی ترتیب ورود اطلاعات را کنترل کنی

mc_laren
پنج شنبه 30 آبان 1387, 09:37 صبح
ضمن تشکر از دوستان
در جدول من برای فیلدی که می خواهم بدست آورم هیچ نظمی وجود ندارد
فکر کنید مثلا می خواهم آخرین دانشجویی که در یک مسابقه شرکت کرده را پیدا
کنم حالا در اینجا دیگه نظمی مطرح نیست و اصلا به تاریخ و زمان هم نمی شود
اطمینان کرد چون توسط کاربر قابل تغییر می باشد. در ضمن ممکن نفری که اول ثبت نام
کرده توسط کاربر حذف شود و دفعه بعد که مراجعه کرد نفر آخر می باشد پس می بینید
که هیچ نظمی وجود ندارد.
در ضمن این حالت ها همه یک مثال بود.

********************************************
به نظر شما در این صورت آیا عنوان تاپیک مشکل دارد؟

linux
پنج شنبه 30 آبان 1387, 09:48 صبح
ضمن تشکر از دوستان
در جدول من برای فیلدی که می خواهم بدست آورم هیچ نظمی وجود ندارد
فکر کنید .........
روی یک مجموعه نا منظم نمی شود کاهارهای منظم انجام داد، به هر حال شما باید نمایه هایی برای مشخص کردن طوالی مسابقات و ... بکار ببرید

masoudcg1
دوشنبه 11 آذر 1387, 23:25 عصر
Select top 1 fildname from yourtable order by newid()--!\/|m

Sal_64
سه شنبه 12 آذر 1387, 19:27 عصر
سلام

مطالب گفته شده برای موردی که
یا فیلد identity و یا یک فیلد تاریخ وجود داشته باشه جوابگو هست

در صورتیکه هیچکدوم از موارد فوق نباشه چطور میشه اینکار رو کرد؟

آیا sql تو این زمینه ناتوانه؟


با تشکر

salimim
چهارشنبه 13 آذر 1387, 15:24 عصر
با اجازه تمام اساتيد
اگر از 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

Sal_64
جمعه 15 آذر 1387, 17:03 عصر
سلام


اگر از sql 2005 يا sql 2008 استفاده مي كنيد بايد با استفاده از ranking functions يك فيلد شماره گذاري استفاده كنيد سپس اونو به صورت معكوس sort كنيد و حالا top n رو درخواست كنيد.آیا این فیلد runtime اضافه میشه و یا ..
در مورد کدتون بیشتر توضیح می دید؟


با تشکر

salimim
یک شنبه 17 آذر 1387, 10:47 صبح
بله runtime اضافه مي شه يه فيلد ترتيبي هست كه بدون در نظر گرفتن نظم خاصي( براساس) داده هاي فعلي فيلد RANK رو اضافه مي كنه.
البته روشهاي ديگه يي هم براي rank دادن هست كه اينجا كاربرد نداره.

Sal_64
یک شنبه 17 آذر 1387, 13:01 عصر
سلام

جناب salimim
تشکر

امکان داره در مورد اون کد(پست 8) بیشتر توضیح بدید ؟

و مورد بعد اینکه آیا میشه با استفاده از اون select نوشت که مثلا رکوردهای مابین رکورد 100تا200 رو برگردونه؟


با تشکر

salimim
یک شنبه 17 آذر 1387, 13:49 عصر
اول جواب قسمت دوم!
بله شما بايد 2 تا select بزنيد كه يكيش تا 200 امي را نتخاب كنيد بعد بدون desc فش 100 امي رو-- اميدوارم خوب گفته باشم


و اما در مورد كدها


select top 5 row_number() over(order by order_col)

row_number يك فيلد ترتيبي ايجاد مي كنه كه بر اساس فيلد ذكر شده در over خواهد بود. از آنجائيكه ما هيچ ترتيبي رو مدنظر نداريم اونو بر اساس يك فيلد مجازي؟! كه توي همه ركوردها عدد صفر تعريف شده مرتب مي كنيم.

0 as order_col
همين!

Sal_64
یک شنبه 17 آذر 1387, 14:44 عصر
سلام

تشکر

شما بايد 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

با تشکر

Sal_64
سه شنبه 19 آذر 1387, 22:27 عصر
سلام
دوستان عزیز کسی می تونه راهنمایی کنه؟


با تشکر:لبخندساده: