PDA

View Full Version : انتخاب کمترین رکورد ها--کمک !



M * M * A
چهارشنبه 21 آذر 1386, 20:50 عصر
با سلام خدمت مهندسین جوان
من چگونه می توانم 3 سطر از تیبل را که کمترین تاریخ از بقیه تارخ ها را دارد را انتخاب نمود؟


کد | نام | فامیل | تاریخ تولد
--------------------------------------------------------------
1 محمد محمدزاده 24/3/65
2 رضا علیجان نژاد 10/10/66
3 جعفر حسینی 11/10/66
4 فرشاد بیک 14/10/66
6 .... .... 64/18/05
5
7
8

حمیدرضاصادقیان
چهارشنبه 21 آذر 1386, 20:53 عصر
خوب شما میتونی دستور را به این صورت بنویسی.


Select top 3 code,name,famil,Date from table1 order by date

M * M * A
پنج شنبه 22 آذر 1386, 10:20 صبح
این کدی که شما نوشتید فقط 3 سطر را نمایش میدهد ولی من می خواهم 3 سطر از سطر هایی را انتخاب کند که کمترین تاریخ ها را دارن!

JAFO_IRAN
پنج شنبه 22 آذر 1386, 11:53 صبح
سلام

البته منظور آقای صادقیان با desc در انتهای order بوده که فکر کنم سهوا جا افتاده

ارادت

حمیدرضاصادقیان
پنج شنبه 22 آذر 1386, 14:06 عصر
سلام.مگر شما نمیخواهید کمترین تاریخ را انتخاب کنید؟ببخشید مگر دستور order از زیاد به کم سورت میکنه!!! اگر desc میگذاشتم که اول بزرگترین تاریخ رو نمایش میداد.

JAFO_IRAN
پنج شنبه 22 آذر 1386, 14:14 عصر
سلام

آقای صادقیان - کاملا ببخشید - حق با شما است. کمدی موقیت شد... اینقدر این داستان desc تکرار شده که اینجا اشتباه کردم. زنده باشی

ارادت

رضا عربلو
پنج شنبه 22 آذر 1386, 19:14 عصر
Select code,name,famil,Date from table1 WHERE Date in (Select top 3 Date from table1 GROUP By DATE order by date DESC) order by date

حمیدرضاصادقیان
پنج شنبه 22 آذر 1386, 23:25 عصر
دوست عزیز رضا عربلو شما کاربرد دستور order by رو اشتباه متوجه شدی.دوست عزیز ایشون میخواد کمترین مقدار رو داشته باشه .دستور order by desc فیلد مورد نظر شما رو از بزرگ به کوچک سورت میکنه.در ضمن فکر میکنم سربار دستوری که من نوشتم از دستور شما خیلی کمتر باشه.

رضا عربلو
جمعه 23 آذر 1386, 12:43 عصر
این کدی که شما نوشتید فقط 3 سطر را نمایش میدهد ولی من می خواهم 3 سطر از سطر هایی را انتخاب کند که کمترین تاریخ ها را دارن!
در مورد DESC بله حق با شماست اشتباه تایپی بود.
ایشون سه سطر آخری با کمترین تاریخ را نمی خواست بلکه سطرهایی را می خواست که تاریخ آنها یکی از سه تاریخ کمترین باشد بنابراین شکل درست دستور بصورت زیر است.

Select code,name,famil,Date from table1 WHERE Date in (Select top 3 Date from table1 GROUP By DATE order by date) order by date
اما در مورد سربار میشه با ساختن یک جدول متشکل از سه تاریخ کمترین و جوین آن با جدول اصلی نیز این کار را کرد که فکر می کنم تغییر زیادی در سربار نداشته باشد.