ورود

View Full Version : پیدا کردن نزدیکترین شماره نسبت به شماره درخواستی



khoshblagh
سه شنبه 28 اردیبهشت 1389, 12:49 عصر
با سلام خدمت دوستان
میخوام با دستور sql عبارتی که بتواند در صورت عدم وجود شماره درخواستی نزدیکترین شماره به شماره درخواستی را نمایش دهد را بنویسم.
برای مثال من در جدول دنبال عدد 125 میباشم. در صورت عدم وجود عدد 125 فرضا عدد 124 که در جدول وجود دارد را نمایش دهد.
لطفا در این مورد راهنمایی بفرمائید. متشکرم

Mahyaa
سه شنبه 28 اردیبهشت 1389, 15:55 عصر
یک چیزی شبیه این باید باشه (برای عدد 125 در ستون MyValue برای مثال) :


select MyTable.Column1 , MyTable.Elevation, MyTable.MyValue,
abs(MyTable.MyValue - 125) as diff
from MyTable
where
abs(MyTable.MyValue - 125) = (select min(abs(MyTable.MyValue - 125)) from MyTable)

.

babak_delphi
سه شنبه 28 اردیبهشت 1389, 18:11 عصر
راه قشنگی به نظر میرسه

pezhvakco
سه شنبه 28 اردیبهشت 1389, 19:10 عصر
درود :

پیدا کردن نزدیکترین شماره نسبت به شماره درخواستی

به بین کد چه طوریه :


SELECT TOP 1 shomare
FROM Table1
WHERE (shomare <= 125)
ORDER BY shomare DESC

فکر خوش .

khoshblagh
چهارشنبه 29 اردیبهشت 1389, 06:49 صبح
درود :



SELECT TOP 1 shomare
FROM Table1
WHERE (shomare <= 125)
ORDER BY shomare DESC

.
با تشکر
قراره اگر فرضا عدد 125 را پیدا نکرد نزدیکترین عدد به آنرا مثلا 124 را نمایش دهد. ولی به نظر میرسد این کد از همان اول عدد 124 را نمایش میدهد که مورد نظر من نیست. به هر حال متشکرم.

khoshblagh
چهارشنبه 29 اردیبهشت 1389, 06:51 صبح
یک چیزی شبیه این باید باشه (برای عدد 125 در ستون MyValue برای مثال) :


select MyTable.Column1 , MyTable.Elevation, MyTable.MyValue,
abs(MyTable.MyValue - 125) as diff
from MyTable
where
abs(MyTable.MyValue - 125) = (select min(abs(MyTable.MyValue - 125)) from MyTable)
.

با تشکر
میشه در باره این کد توضیحی بدهید. متشکرم

pezhvakco
چهارشنبه 29 اردیبهشت 1389, 08:58 صبح
درود :

قراره اگر فرضا عدد 125 را پیدا نکرد نزدیکترین عدد به آنرا مثلا 124 را نمایش دهد. ولی به نظر میرسد این کد از همان اول عدد 124 را نمایش میدهد که مورد نظر من نیست

اون کد دستور نزدیکترین عدد کوچکتر یا مساوی 125 رو میده .
اگه 125 باشه خودش، نبود 124 و اگه نبود 123 و تا آخر .

فکر خوش .

Mahyaa
چهارشنبه 29 اردیبهشت 1389, 12:03 عصر
با تشکر
میشه در باره این کد توضیحی بدهید. متشکرم

مینیمم قدرمطلق اختلاف مقادیر موجود در این فیلد رو میگیره و رکوردی رو که برابر این مقدار هست، برمیگردونه.

ABS : قدر مطلق

Mahyaa
چهارشنبه 29 اردیبهشت 1389, 12:16 عصر
درود :


به بین کد چه طوریه :


SELECT TOP 1 shomare
FROM Table1
WHERE (shomare <= 125)
ORDER BY shomare DESCفکر خوش .


این کد فقط اعداد کوچکتر از ورودی رو بررسی میکنه. مثلا اگر اعداد 120 و 126 در جدول موجود باشه، با دادن مقدار 125 به عنوان ورودی، مقدار 120 رو برمیگردونه در صورتی که با توجه به شرح سوال (نزدیکترین عدد) باید 126 رو برگردونه.