PDA

View Full Version : انتخاب آخرین رکورد در دیتابیس و بدست آوردن یک رکورد خاص



c_doost
دوشنبه 21 فروردین 1391, 17:46 عصر
سلام
چطور میتونم آخرین سطر در دیتابیس را انتخاب کنم و یک فیلد را از آن استخراج کنم ؟

p.yazdkhasti
دوشنبه 21 فروردین 1391, 18:02 عصر
سلام
در پایگاه داده Relational و قوانین آن یک Table یک Set است و آخرین مفهومی ندارد. بنابراین شما باید منظور خود را دقیق تر بیان کنید برای مثال منظور شما اولین رکورد است در صورتی که اطلاعات را بر اساس تاریخ ایجاد به صورت نزولی مرتب کنید. با توجه به اطلاعات گفته شده لطفا منظور خود را دقیقا شرح دهید

omid_csh
دوشنبه 21 فروردین 1391, 18:41 عصر
سلام
چطور میتونم آخرین سطر در دیتابیس را انتخاب کنم و یک فیلد را از آن استخراج کنم ؟
سلام
باید بر اساس یک ستون به صورت نزولی مرتب کنی و با top اولین سطر (که میشه آخرین سطر جدول) رو بدست بیاری
select top 1 * from TABLE_NAME order by ID desc

c_doost
دوشنبه 21 فروردین 1391, 18:49 عصر
منظورم واضحه آخرین رکورد دیتابیس
مثلا من در یک یک دیتابیس 100 سطر دارم فیلد های جدول من 4 تاست من مقدار فیلد سوم از سطر 100 این جدول را میخوام

p.yazdkhasti
دوشنبه 21 فروردین 1391, 22:07 عصر
سلام
شما فرمودید آخرین سطر از دیتابیس در صورتی که منظور از آخرین سطر از نظر من ممکن است آخرین رکوردی باشد که Update شده است نه آخرین سطری که ثبت شده است. من توضیحات بالا را ذکر کردم که ذهنیت خود را راجع به آخرین سطر اصلاح نمایید زیرا یک Table یک مجموعه است و آخرین و اولین به تنهایی در یک مجموعه معنا ندارد. برای این منظور باید اطلاعات Table را بر اساس یک یا چند ستون به صورتی Sort نمایید که اولین سطر برابر با سطری باشد که مورد نظر شما است سپس از کلمه Top مانند نمونه ذکر شده توسط دوست عزیز استفاده نمایید. دقت کنید که با استفاده از کلمه Top می توانید چند رکورد با بخوانید و عدد ذکر شده در جلوی آن این تعداد رکورد را مشخص می کند و برای درخواست شما 1 است.

Reza_Yarahmadi
دوشنبه 21 فروردین 1391, 23:31 عصر
Sort کردن سربار بسیار لابایی برای سرور داره ، این سربار زمانی بیشتر خودشو نشون میده که شما تعداد رکورد زیادی داشته باشید.
راه کارهای زیادی برای این قضیه وجود داره ، یکی از راه های بهینه اینه که شما یک فیلد (فرضا با نام ID) بصورت Identity داشته باشید و سلکتی بصورت زیر روی جدول بزنید
Select * From YourTable Where ID = (Select MAX(ID) From YourTable)
در صورتی که روی فیلد ID یک ایندکس هم قرار داده باشید سرعت اجرای دستور بالا رو باز هم میشه بهتر کرد.

p.yazdkhasti
سه شنبه 22 فروردین 1391, 09:38 صبح
Sort کردن سربار بسیار لابایی برای سرور داره ، این سربار زمانی بیشتر خودشو نشون میده که شما تعداد رکورد زیادی داشته باشید.
راه کارهای زیادی برای این قضیه وجود داره ، یکی از راه های بهینه اینه که شما یک فیلد (فرضا با نام ID) بصورت Identity داشته باشید و سلکتی بصورت زیر روی جدول بزنید
Select * From YourTable Where ID = (Select MAX(ID) From YourTable)
در صورتی که روی فیلد ID یک ایندکس هم قرار داده باشید سرعت اجرای دستور بالا رو باز هم میشه بهتر کرد.
سلام
Sort کردن بر اساس نوع فیلد هایی که در Sort شرکت می کنند و این که بر روی آن ها index وجود دارد یا خیر سربار متفاوتی خواهد داشت. استفاده از کد شما و یا استفاده از استفاده از کلمه Top در صورتی که فیلدی که در Sort شرکت می کند PK باشد از نظر زمانی تفاوتی نخواهد داشت.