PDA

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



hamidhassas
سه شنبه 26 فروردین 1393, 10:57 صبح
سلام
من یک دیتابیس دارم که در اون محصولات با نوع شرکت سازنده در اون زخیره شدن میخوام کاری کنم که سیستم کل رکورد ها رو بر اساس company برسی کنه ببینه کدوم رکورد ها بیشترین تکرار رو دارن و بعد بیاد بگه از کل رکورد های موجود که بر اساس در فیلد company برسی شدن عدد 5 و بعد عدد 12 و بعد عدد 16 بیشترین تکرار رو دارن که که هر عدد کد یک شرکت هست مثلا 5 شرکت نوکیا و 12 شرکت سامسونگ و 16 شرکت اپل

چهار رققم بیشترین تکرار و کمترین تکرار میخوام یعنی از کدوم شرکت ها بیشترین محصول ثبت شده و از کدوم شرکت ها کمترین محصول
و اینکه تا حالا محصولات چند شرکت ثبت شدن

عدد ها رو خودش تشخیص بده که کدوم محصولات بیشترین و کمترن مقدار ثبت سیستم شدن عدد ها رو خودم بعد به نام شرکت ها تغییر میدم






با کد مشابه زیر میتونی رکوردهایی رو که بر اساس به فیلد خاص تکراری هستن رو بدست بیاری.


1

SELECT `company_id` FROM `tbl_products` group by `company_id` having count(*) >= 1







اما بستگی داره به ساختار جدولت و نوع ذخیره سازی.
اگه یه جدول داری که توش آیدی شرکت و اطلاعات محصول رو توش ذخیره میکنی، میتونی از دستور بالا استفاده کنی.

حالا اگه بخوای کمینه یا بیشینه نتایج رو بدست بیاری میتونی از limit و یا دستور top برای انتخاب تعداد رکورد مشخص و از دستور order by برای مرتب سازی استفاده کنی.
مثال:


1

SELECT `company_id`,count(`company_id`) as `count` FROM `tbl_products` group by `company_id` having count(*) >= 1 ORDER BY `count` DESC LIMIT 2







این کد 2 تا از شرکت هایی رو که بیشترین فروش دارن رو بر میگردونه.
حالا اگه بخوای شرکت هایی که کمترین فروش رو دارن رو بدست بیاری کافیه نوع مرتب سازی رو عوض کنی:


1

SELECT `company_id`,count(`company_id`) as `count` FROM `tbl_products` group by `company_id` having count(*) >= 1 ORDER BY `count` ASC LIMIT 2







ظاهرا شما این کدها رو عینا کپی پیست میکنین که میگین کار نمیکنه! خب باید ویرایشش کنین دیگه!

hamid_computer3
سه شنبه 26 فروردین 1393, 11:41 صبح
این رو چک کن



$result=mysql_query("select `product_company` ,count (`product_company`) from `services` group by `product_company` having count (`product_services`) >1");
if(mysql_num_rows($result_11)!=0)
{
print $max_company_record=mysql_result($result,0,'count' );
}

hamidhassas
سه شنبه 26 فروردین 1393, 11:42 صبح
کار نمیکنه
میشه توضیح بدین این کد چطوریهذو چه کاری انجام میده

Unique
سه شنبه 26 فروردین 1393, 12:08 عصر
خوب توضیح ندادی.

میخوای بدونی کدوم شرکت ها کمترین تعداد محصولات را دارن و کدوم بیشترین تعداد (محصول مهم نیست و تعداد برای هر شرکت مهمه) ؟
میخوای بدونی کدوم محصولات بیشترین تولید کننده را دارند و کدوم کمترین تولید کننده (محصول مهمه و تعداد سازنده) ؟

شایدم اصلا یه چیز دیگه. تا توضیح دقیق ندی نمیشه جواب درست داد.

SlowCode
سه شنبه 26 فروردین 1393, 13:14 عصر
با کد مشابه زیر میتونی رکوردهایی رو که بر اساس به فیلد خاص تکراری هستن رو بدست بیاری.
SELECT `company_id` FROM `tbl_products` group by `company_id` having count(*) >= 1
اما بستگی داره به ساختار جدولت و نوع ذخیره سازی.
اگه یه جدول داری که توش آیدی شرکت و اطلاعات محصول رو توش ذخیره میکنی، میتونی از دستور بالا استفاده کنی.

حالا اگه بخوای کمینه یا بیشینه نتایج رو بدست بیاری میتونی از limit و یا دستور top برای انتخاب تعداد رکورد مشخص و از دستور order by برای مرتب سازی استفاده کنی.
مثال:
SELECT `company_id`,count(`company_id`) as `count` FROM `tbl_products` group by `company_id` having count(*) >= 1 ORDER BY `count` DESC LIMIT 2
این کد 2 تا از شرکت هایی رو که بیشترین فروش دارن رو بر میگردونه.
حالا اگه بخوای شرکت هایی که کمترین فروش رو دارن رو بدست بیاری کافیه نوع مرتب سازی رو عوض کنی:
SELECT `company_id`,count(`company_id`) as `count` FROM `tbl_products` group by `company_id` having count(*) >= 1 ORDER BY `count` ASC LIMIT 2
ظاهرا شما این کدها رو عینا کپی پیست میکنین که میگین کار نمیکنه! خب باید ویرایشش کنین دیگه!