PDA

View Full Version : سوال: بدست اوردن نزدیک ترین آموزشگاه با استفاده از پیش شماره



.fatemeh
دوشنبه 29 دی 1393, 16:31 عصر
سلام
کاربر شماره تلفن منزلش رو وارد می کنه.
حالا باید با استفاده از پیش شماره نزدیک ترین آموزشگاه نمایش داده بشه.
تعداد آموزشگاه ها در طول زمان کم و زیاد می شه یعنی نباید طوری بنویسم که با اضافه شدن یا کم شدن یه آموزشگاه لازم باشه دستورات تغییر کنه.
دوستان راه حلی به نظرشون نمیرسه؟؟
کاری که خودم انجام دادم اینه که بیاد شماره کاربر رو از تلفن آموزشگاه ها کم کنه اختلاف هر کدام کمتر بود نزدیک تره.
درست در میاد بدون در نظر گرفتن اعداد منفی.
کوئری که نوشتم اینه
select id,min($idcaller-`tell`) from info_school

چه طوری میشه اعداد منفی رو از حاصل این کوئری حذف کرد؟

ciph3r
دوشنبه 29 دی 1393, 21:43 عصر
اشتباههاگر تعداد شماره ها زیاد نیست از آرایه استفاده کن وگرنه از دیتابیسخودت دسته بندیش کن دیگههر شهری نهایت چند تا پیش شماره دارهولی اگر هم نخواستی از گوگل مپ و share location استفاده کن

.fatemeh
دوشنبه 29 دی 1393, 22:02 عصر
من نزدیک به 200 تا آموزشگاه دارم.البته الان
طوری نیست که بشه از گوگل مپ استفاده کرد.
چه طوری از دیتابیس خودم دسته بندیش کنم؟
اولش می خواستم با دستور switch بنویسم، بیام مناطق رو پیدا کنم و الی آخر...
ولی مشکلش این بود:
فرض کنید توی منطقه X الان آموزشگاهی وجود نداره پس توی دسته بندی هم نیست.
ولی بعد از مدتی یه آموزشگاه اضافه میشه که اتفاقا توی منطقه X هست.
حالا باید دستور switch رو تغییر بدیم و منطقه جدید رو اضافه کنیم.نباید وابسته به برنامه نویس باشه.
اگر مشکل اعداد منفی حل بشه درست میشه.
تا فردا صبح باید درستش کنم:گریه:

MMSHFE
سه شنبه 30 دی 1393, 08:25 صبح
از تابع abs استفاده کنید. لینک: http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_abs

.fatemeh
سه شنبه 30 دی 1393, 12:16 عصر
از تابع abs استفاده کنید.

نشد.مثبت می شه ولی خروجی اشتباهه.

.fatemeh
سه شنبه 30 دی 1393, 13:04 عصر
ممنون مهندس شهرکی حل شد
دفعه اول نوشته بودم
SELECT abs(min($callerid - `tel` )) AS number_tel
FROM `info_school`
اشتباه شد
جای تابع min و abs رو تغییر دادم درست شد.
بازم ممنون