بهترین راه دسته بندی و استخراج اطلاعات ( چندین انتخابی multiple select )

درود خدمت شما . نزدیک به یکی دو ساعتی فکر کردم چی تیتر بزنم به نتیجه ای نرسیدم به همین منظور اومدم و کلی تیتر زدم امید وارم بنده رو ببخشید

لطفا به لینک زیر نگاهی کنید
https://stackideas.com/changelog/easyblog

من دارم همچنین چیزی رو برای خودم می سازم . مشکل من از جایی شروع می شه که به طور غیر طبیعی دارم مقتومت می کنم یک جدول اضافه نسازم و دلیلش هم مشخص نیست یعنی خودمم نمی دونم

اگر متوجه شده باشید وب سایت بالا بر اساس ورژن می یاد در زیر رکورد هارو نشون می ده و تعدادشونم می شماره(البته تعداد داده های مربوط به همین ورژن رو )

حالا من چند مشکل دارم :

۱. نمی خوام یک جدول دیگه بسازم که ورژن بره توش نمی دونم چرا ولی حتما می خوام بدون اون این کارو انجام بدم

۲. من علاوه بر شمارش تعداد کل رکورد ها در همین ورژن انتخابی نیاز به شمارش کل رکورد ها در تمام ورژن هارو هم دارم .

۳. چون من جدولی برای ورژن ندارم جداگانه باید بیام بگم فقط رکورد هایی که توش فیلد ۱.۲۴ ورژنشونه بیاد ولی من تا قبل از خواندن این صفحه نمی دونم چه ورژن هایی دارم کد باید تو جدول بگرده پس چیجوری ورژن هارو لیست کنم برای کاربر

می شه اینجا مثلا دوتا نود بره تو دیتابیس ولی جالب هست ؟ لطفا نگید دوباره برم یک جدول واسط برای ورژن بسازم :sweat_smile: کمرم شکست از بس دیتابیس تعریف کردم :disappointed_relieved::disappointed_relieved::disappointed_relieved::lion:

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

Untitled

1 پسندیده

صفحه بندی یعنی چی؟ من درست متوجه نشدم☹️

1 پسندیده

توماج جان یعنی Pagination نداره تمام رکورد ها چک می شند تیتر بهتری پیدا نکردم وگرنه اینم باید از تیتر حذف می کردم :sweat_smile: ببخشید دیگه ولی اصل موضوع در همون تایپیک بالا کامل توضیح دادم ببخشید کمی طولانی هم هست

1 پسندیده

Paginate با این موضوع چه رابطه ای داره دقیقا؟
دارم سعی میکنم مشکل اصلی رو متوجه بشم

1 پسندیده

ربط زیادی نداره بیشتر منظور این بوده که من بدون اون دارم انجام می دم

شما فکر کنید من اگر صفحه بندی می کردم در ۱۰ رکورد آخر باید تمام صحبت های پست اولم مثلا چک می شد ولی من اینطوری نمی خواستم باید می اومد ۱۰ رکرد آخر از ورژن خاص رو برام می آورد.

شما کلا فکرتون از صفحه بندی بیارید بیرون :sweat_smile:

بله متوجه هستم لطف می کنید

1 پسندیده

یه سوال! اگر بخوای اطلاعاتی در مورد release ذخیره کنی کجا میره؟ مثلا date, و یک نسخه خلاصه از release note یا اصلا هرچیز دیگه.

میپرسم چون بنظرم میتونه بعدا ضعف مدلینگو نشون بده

2 پسندیده

سایتم به این صورت هست .

  • در اولین قدم من یک مجموعه دارم مثلا به نام “افزونه آسان پرداخت جوملا”
  • در قوم دوم مدیریت می یاد و به این مجموعه بالا هر سری با هر تغییر یک رکورد درست می کنه که توش ورژن + اطلاعات تکمیلی هست
  • در قدم سوم کاربر می یاد در این مجموعه و بر اساس هر ورژن لیست تغییرات رو می بینه

پس مدیریت هر سری با هر تغییر در افزونه می یاد در مجموعه افزونه آسان پرداخت جوملا یک رکورد اضافه می کنه

حالا مشکل اینجاست که من به نحوی می خوام ببنیم می تونم فیلد ورژن رو دور بزنم . یک کاراهش این هست که من بیام جدولی درست کنم و رلیشن کنم به جدول رکوردم و اونجا کاربر بر اساس اون سرچ بزنه یک روش دیگه که سوالم هست چطوری بدون اون انجام بدم

برای اینکه حرفامو در این کامنت جمع بندی کنم من در هر درخواست به این اطلاعات نیاز دارم

  • کل رکورد های ثبت شده در افزونه آسان پرداخت ورای ورژنی انتخاب شده منظور به صورت کلی
  • کل رکورد های ثبت شده در ورژن مثلا ۱.۰ تعدادشون
  • لیست ورژن هایی که کاربر هر دفعه وارد کرده
    39%20pm

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

در کل فعلن من دو جدول دارم

۱. مجموعه
۲. رکورد ها
که به هم رلیشن شدند

1 پسندیده

اگر جدول release یا ورژن نداشته باشی، هم دیتای بیشتر و غیر ضروری باید ذخیره کنی هم اینکه مدل ناقص میشه و scale کردن هم سخت تر، اما در صورت وجود جدول ورژن یا هرچی‌که دوست داری اسمشو بزاری (من میزارم releases) فقط FK ورژن در هر رکورد CL وجود داره. هر ورژن برای خودش باید مثل یک تایپ یا کتگوری دیده بشه.
مثلا فکر کن اصلا به جای همین جدول کتگوری میخواستی از فقط یک جدول استفاده کنی! باید چکار میکردی؟ (ورژن و کتگوری در این موضوع تقریبا فرقی با هم ندارند)

نکته دیگه اینه که نامگذاری جدول های بالا زیاد خوب نیست، سعی کن اسم ها جمع بسته بشه

change_logs, change_log_categories

2 پسندیده

اینجوری که مشخصه من راهی جز ساخت جدول رلیز یا ورژن ندارم . ولی فرض بگیریم جدول رلیز درست شد باز تعداد درخواست ها کمی بالا هست

مثلا

Select category
Join Records
Where == Release
Count all Records of the Release of the Category

---------------
Count all Records of the Category

------------
Load all Release Titles

چهار مرد اول می شه یک نود آورد . بعد شمردن کل رکورد های یک مجموعه باز خودش یک درخواست دیگه درسته؟

لود تمام تایتل های گزینه های رلیز هم یک درخواست

یعنی من سه درخواست مجزا می خوای به دیتابیس بفرستم تک به تک مثلا لود کنه بهم پس بده ؟ این کارم درسته ؟

1 پسندیده

وقتی میگی بالا یعنی چقدر بالا؟

من یک افزونه جوملایی رو در سال های زیادی توسعه می دم . به عنوان مثال برای شروع یک افزونه کوچیک تا هزار تا کامیت داشتم حالا این تعداد ضرب می شه آخرش بر ۱۰ بشه ۱۰ هزار تا رکورد . از نظر رکورد زیاد ممکنه نباشه ولی من ممکنه در آینده پروژه ای بگیرم که تعداد رکورد هاش زیاده می خوام به اصل بهترین راه برسم یعنی راه خوب چی هست ؟

سه درخواست ؟ بره دیتابس بیاد ؟

جنبه کلی سایتی که دارم برای خودم می سازم کسب تجربه و یادگیری هست نه فروش یا … به همین منظور دارم هرچی در توانم هست رو تست می کنم

خب نداشتن جدول ورژن چه کمکی میکنه؟
نتیجش کاملا برعکسه

1 پسندیده

می خواستم فرار کنم از جدول جدید ولی دیگه متقاعد شدم . حالا می خوام یاد بگیرم بهترین راه با جدول ورژن چی هست؟

مثلا سه درخواست رو چیجوری باید ارسال بشه

مثلا مرحله به مرحله از دیتابیس بخونم یعنی ۳ بار به دیتابیس درخواست بدم یا راهی دیگه ای پیشنهاد می کنید ؟ با اینکه ممکنه جدول بزرگ بشه .

SELECT COUNT(*)
FROM change_logs
INNER JOIN releases ON change_logs.release_id = releases.id;
1 پسندیده

پاسخ واضح نیست؟

1 پسندیده

اینجوری که من متوجه شدم شما الان دارید تعداد رکورد های داخل یک ورژن یا رلیز رو می شمارید اگر این مورد بود مشکلی نبود

من علاوه بر بالا نیاز دارم

۱. تعداد کل رکورد های کل ورژن ها یک جا نیاز دارم
۲. لیست ورژن ها که اونجا به کاربر امکان انتخاب بدم .

من دارم راهی رو اشتباه می رم ؟ به نظرم می خوره سه بار درخواست باید انجام بشه بر اساس اطلاعاتی که می خوام

SELECT
(SELECT COUNT(*) FROM change_logs) AS A,
(SELECT COUNT(*)
   FROM change_logs
   INNER JOIN releases 
   ON change_logs.release_id = releases.id WHERE releases.version = 5.1) AS V;
1 پسندیده

توماج جان اول باید خیلی تشکر بکنم وقت قرار دادی و واقعا ممنونم ازت.

من کد شما رو متوجه شدم ولی به اکتو در آوردنشو هنوز در نبردم که چطور اونجا رفتار کنم و اینکه الان این یک نود می شه یا خیر؟

الان داریم در مورد Joomla, Sql یا Ecto بحث میکنیم :confounded:

1 پسندیده

ببخشید :disappointed_relieved: داریم در مورد Ecto بحث می کنیم که داره از پستگرس می خونه