آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

سوال راجب دستور SELECT پیشرفته در Mysql

HosSeiN  10 سال پیش  10 سال پیش
0 0

با سلام و وقت بخیر خدمت دوستان

فکر میکنم نوشتن این دستور SLECET فقط کار یک استاد با تجربه در mysql هست و بس و من هرکاری کردم موفق نشدم.

کل پروژه نیازمند به این SELECT هس که ماه ها وقت گذاشتم براش و اگر از دوستان کسی بتونه این کد رو بنویسه از نظر پرداخت هزینه تا حد قابل توجه ای پرداخت میکنم.

پروژه ی اندرویدی دارم که از طریق ListView اطلاعاتی رو در یک ستون از نوع text در دیتابیس Mysql ذخیره میکنه که هر آیتم در ListView شامل 3 مقدار عددی هست و در ذخیره مشکلی ندارم. در هنگام جستجوی این فیلدها و استخراج به صورت JSONArray کار پیچیده ای باید انجام بشه:


3 مقداری که گفتم رو به صورت اعشاری a.bc ذخیره کردم که مجموع آیتم ها به شکل زیر ذخیره میشه
" a.bc a.bc a.b a a a.b a.bc "

وجود مقدار a همیشه الزامی هست ولی b و c الزامی نیست ممکنه باشه و نباشه

تعداد کاراکتر مقدار a و c متغیر هست ولی b فقط 1 کاراکتر هست (0-9)

از طریق $_REQUEST در php مقادیر a b c دریافت میشه.

خروجی jason array باید به شکل زیر باشه:

شرط استخراج اینه که هر پارتی که با space در ستون text جدا شده این شرایط رو داشته باشه:

مقدار a برابر با a دریافتی از $_REQUEST هست.

و اگر مقدار b توست $_REQUEST تعیین شده بود مقدار b کجا بزرگتر و مساوی هست.

و اگر مقدار c توست $_REQUEST تعیین شده بود مقدار c کجا کوچکتر و مساوی هست.


مثال 1:

مقدار درخواستی هنگام جستجو  a = 22      b = 5      c = 777

کجا پارتی وجود داره که 22.5777 هست و یا خوده 22 و (خود 5 و بزرگترش تا 9) و (خود 777 و کوچکترش تا 0)


مثال 2:

مقدار درخواستی هنگام جستجو  a = 40      b = 2

کجا پارتی وجود داره که 40.2 هست و یا خوده 40 و (خود 2 و بزرگترش تا 9) و c مهم نیست که وجود داشته باشه و یا چقدر باشه


مثال 3:

مقدار درخواستی هنگام جستجو  a = 1200      

کجا پارتی وجود داره که 1200 هست و b و c مهم نیست که وجود داشته باشه و یا چقدر باشه


در خروجی هم هر پوزیشن آرایه, 3 فیلد رو در 3 نام a b c + دیگر مشخصات اون رکورد دیتابیس (*) استخراج میکنه

تعداد رکردهای دیتابیس خیلی زیاده و باید در دستور SELECT با دستورات پیشرفته این استخراج صورت بگیره و نمیشه مقدار رو دریافت کرد و بعدا کارایی روی استخراج به کمک آرایه ها و... انجام داد.

با دستورات substring regexp concat و دیگر دستورات پیشرفته php غیر ممکن نیست.


+2 0
چرا مقادیر a , b و c رو در 3 فیلد قرار نمی دی؟ اگه در سه تا فیلد عددی قرار بدی با یک select ساده می تونی سرچ کنی. مثل : SELECT * FROM TABLE_NAME WHERE a=REQUEST_$ AND b>=REQUEST_$ AND c (10 سال پیش)
+1 0
خب دوستمون راست میگه.شما 3تا فیلد a ,b ,c درست کن .بعد شرط توام که دوستمون بالا نوشته رو انجام بده.بعداز جستجو.سه تا فیلد رو داخل یک رشته به هم متصل کن.چون اگه بخوای جور دیگه بری خیلی به نظر من عمل جستجو دیتابیست سنگین میشه و بخوای براساس اسپیس بری جلو به نظر شخصی من منطقی نیست. (10 سال پیش)
0 0
با سلام و تشکر بابت توضیحاتتون. اگر پروژه این اجازه رو میداد بله حق با شما بود. مسئله اینجاست که با لیست ویو ای که من دارم کاربر از 0 تا 1600 تا مقدار a میتونه انتخاب کنه و مقادیر b و c اون هم متغیر هست. اگر بخوام برای همه ی این 1600 تا آیتم در لیست ویو یک ستون بسازم دیتابیس خیلی مدیریتش سخت میشه. تازه هنگام لاگین کاربر هم این اطلاعات برای ویرایش هربار در پنلش لود میشه. (10 سال پیش)
0 0
از نظر سنگین شدن عملیات جستجو قصد دارم برای حل مشکلش سرور اختصاصی با رم +128 و... بگیرم با وجود چند میلیون رکرد که روزانه مثلا 100.000 جستجو درش انجام بشه به نظر شما چنین سروری میتونه ساپرت کنه؟ یک نوع دیگری جستجو هم وجود داره که 2تا table رو با هم جوین میکنه که اونم روزانه تا 100.000 جستجو ممکنه انجام بده (10 سال پیش)
0 0
لازم نیست برای هر مقدار یک ستون ایجاد کنید کافیه ۳ تا ستون برای مقادیر a b c ایجاد کنید و موقع اضافه کردن به جدول فقط یک سطر به جدولت اضافه کنی. و حتی می تونی اون عبارت پیچیده ای که می خوای از a b c ایجاد کنی رو تو دیتا بیس ذخیره نشه. چون با محاسبه قابل بدست اومدنه. به نظر می رسه شما دیتابیس ت رو خوب و نرمال طراحی نکردی به نظر من دیتابیس رو به یک متخصص نشون بده یا همین جا بزار اساتید راهنمتییت کنن. (10 سال پیش)
0 0
لازم نیست برای هر مقدار یک ستون ایجاد کنید کافیه ۳ تا ستون برای مقادیر a b c ایجاد کنید و موقع اضافه کردن به جدول فقط یک سطر به جدولت اضافه کنی. و حتی می تونی اون عبارت پیچیده ای که می خوای از a b c ایجاد کنی رو تو دیتا بیس ذخیره نشه. چون با محاسبه قابل بدست اومدنه. به نظر می رسه شما دیتابیس ت رو خوب و نرمال طراحی نکردی به نظر من دیتابیس رو به یک متخصص نشون بده یا همین جا بزار اساتید راهنمتییت کنن. (10 سال پیش)
0 0
ببینید دوست من, ضمن تشکر صمیمانه بابت اینکه قصد کمک به بنده رو دارید, مسئله فقط سرچ کردن نیست. این مقادیر توسط یک سری کاربران لود, تغییر و مجددا ذخیره میشه و از طرف دیگه توسط یک سری کاربران دیگه جستجو میشه, تازه در کنار اینها مشخصات فردی کاربر طرف اول هم برای کاربر طرف دوم که جستجو میکنه باید کنارش جستجو بشه اگر جدول جدا بسازم برای این مقادیر هم جوین های سنگینی خواهم داشت و هم نیاز به user_id برای هر مقدار میشه که حجمش هم سر به فلک میکشه. برای هر کاربر از 1 تا 20 تا user_id در این جدول ذخیره میشه. اینکه فرمودید دیتابیس رو به حرفه ای ها نشون بدم کاملا درسته بهش فکر میکنم اما دانش mysql فکر میکنم بیشتر تجربی باشه نه علمی و هرکس هم تجربه ی خاص خودشو داره و نمیدونم راهنمایی چه کسی بیشتر به درد کار من میخوره. (10 سال پیش)
0 0
شما نه نیاز به ستون اضافه دارید و نه جدول اضافه. دیتا بیس شما نرمال شده؟ اگه قوانین نرمال رو پیاده کرده باشین معمولا نیازی به جدول و فیلد اضافه نیست. (10 سال پیش)
0 0
خیلی خیلی بد توضیح دادی :( بگو جدول هات چی هستن. و خروجی چی میخای. شایدم لازم باشه از پروسیجر استفاده کنی (10 سال پیش)
0 0
از شمای دیتابیست عکس بزاری بهتره (10 سال پیش)
0 0
از شمای دیتابیست عکس بزاری بهتره (10 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .