• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
حذف یا به حساب نیاوردن رکورد های تکراری
#1
سلام بر همه دوستان،

امروز میخوام چیزی رو که یاد گرفتم بهتون یاد بدم. اگر زیاد برنامه بنویسید و روش فکر کنید تا مشکلاتون رو برطرف کنید ، یکی از مواردی که احتمالاً نمی دونید ، اینه که چطوری رکورد های تکراری رو موقع بدست گرفتن ستون/ستون هایی از یک جدول به حساب نیاریم.
فرض کنید یک جدول داریم که دارای دو ستون شناسه و نام کاربری هست. اگر در این جدول 5 مقدار داشته باشیم و 3 تای آنها نام کاربری یکسانی داشته باشند ، برای نمایش آنها و درنظر نگرفتن نام کاربری های تکراری باید از دستور DISTINCT مثل زیر استفاده کنیم:
کد پی‌اچ‌پی:
mysql_query"SELECT DISTINCT `column_name` FROM `table_name`" ); 


موفق و پیروز باشید Heart
غایب
  پاسخ
تشکر شده توسط : molana Goback ayoubsys
#2
DISTINCT گویا خیلی توصیه نشده ازش استفاده بشه. بهتره از group by استفاده کنید
  پاسخ
تشکر شده توسط : cyletech kasbookar
#3
(۱۳۹۰ فروردین ۰۸, ۰۹:۲۶ ب.ظ)zoghal نوشته: DISTINCT گویا خیلی توصیه نشده ازش استفاده بشه. بهتره از group by استفاده کنید

این دوتا مگه یه کار انجام میدن؟

اللهم صل علی محمد و آل محمد و عجل فرجهم

افلاطون را گفتند چرا هرگز غمگین نمیشوی؟
گفت :دل برآنچه نمی ماند،نمی بندم.
  پاسخ
تشکر شده توسط :
#4
سلام !
میتونید این کار رو با PHP هم انجام بدید...
با فانکشن ِ array_uniqe
موفق باشید.
  پاسخ
تشکر شده توسط : cyletech Goback
#5
نقل قول:این دوتا مگه یه کار انجام میدن؟
بله امید جان. وقتی از GROUP BY استفاده می کنیم اگر چند تا کوئری یکسان تو اون ستونی که مشخص می کنیم بعد از اون باشه فقط یکیشو نشون میده. درست همون کاری که DISTINCT و تابعی که دوستمون معرفی کرد یعنی array_unique انجام میدن. Blush
حالا اینکه کجا از کدوم یکی استفاده کنیم مهمه. اگر فقط بخوایم مستقیم اطلاعات داخل ستونی رو تجزیه و تحلیل کنیم و تکراری هارو نشون ندیم از GROUP BY یا همون DISTINCT استفاده می کنیم. اما وقتی بخوایم فرضاً رشته های تکراری یک آرایه رو تجزیه و تحلیل کنیم و تکراری هاشو حذف کنیم موقع نمایش از array_unique استفاده می کنیم.

توجه کنید که: صالح جان هم فرمودند که گویا از مد افتاده استفاده از DISTINCT و درسته حق با ایشونه. فکر کنم این دستور برای MySQL نگارش 3.23.36 هست و الآن استفاده از GROUP BY توصیه میشه Angel
غایب
  پاسخ
تشکر شده توسط : Goback zoghal ayoubsys
#6
array_unique برای رکوردهای بالا درست نیست چون رم زیادی رو وارد php می کنه
DISTINC با group by فرق می کنه چرا؟
group by میاد و بر اساس یک ستون گروه بندی می کنه. خب قاعدتا اگر از اون رکورد دو تا نتیجه باشه حذف می شه
اما DISTINCT میاد و بر اساس کل نتایج ( یعنی بر اساس ستونهای نتیجه خروجی ) رکوردهای تکراری رو قرار نمیده. پس دو تا کارکرد متفاوتی رو دارن و استفاده های خودشون رو دارن

  پاسخ
تشکر شده توسط : Goback cyletech zoghal molana ayoubsys
#7
سلام دوستان من میخوام محتوای تکراریمو حذف کنم و از array_unique استفاده میکنم و قطعه کدی که نوشتمو میزارم ولی همچنان محتوای تکراری من در خروجی نشون داده میشه!

کد پی‌اچ‌پی:
 $result2 $db->sql_query("SELECT DISTINCT keyword FROM ".$prefix."_blog where keyword!='' and active=1 order by keyword asc");
  while (list($keyword) = $db->sql_fetchrow($result2)) {
  $names explode('،',$keyword);
  $names_unique array_unique($names);
  $ttgo str_replace(" ""-"$names_unique[0]);

    $out1 .= "<li><a href='".$site_url."search/".$ttgo."/'>".$names_unique[0]."</a></li>\n";

  
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان