یافتن 100 مقدار به صورت رندم بدون تکرار

شروع موضوع توسط ALYREZA ‏19 فوریه 2013 در انجمن برنامه‌نویسی با PHP

  1. ALYREZA

    ALYREZA Member

    ارسال‌ها:
    89
    تشکر شده:
    37
    امتیاز دستاورد:
    6
    سلام
    بهترین روش برای خواندن مثلا 100 مقدار از دیتابیس و نمایش آنها به صورت رندم بدون نمایش تکراری یا جا انداختن رکوردی ، چیست ؟
    اگر مثالی همراه با کد بزنید ممنون میشم:cool:
    با تشکر:rose:
     
    آخرین ویرایش: ‏19 فوریه 2013
    نوشته شده توسط ALYREZA در ‏19 فوریه 2013
  2. kassit

    kassit Member

    ارسال‌ها:
    52
    تشکر شده:
    22
    امتیاز دستاورد:
    6
    سوال خیلی کلیه دوست عزیز،
    چیزی شبیه این باید استفاده بشه

    کد (Text):

    SELECT DISTINCT value FROM table ORDER BY RAND()
     
     
    نوشته شده توسط kassit در ‏26 فوریه 2013
    ALYREZA از این پست تشکر کرده است.
  3. ALYREZA

    ALYREZA Member

    ارسال‌ها:
    89
    تشکر شده:
    37
    امتیاز دستاورد:
    6
    نه منظورم رو نگرفتی!
    فیلد تکراری وجود نداره که از distinct استفاده کنم بعدش با rand پدر mysql در میآد


    فکر کن صد تا عدد غیر تکراری و نیز می تونه این صدتا پشت سرهم نباشه ، حالا بهترین راه برای انتخاب این صد عدد به صورت رندم و غیر تکراری چیست ؟

    من میگم این صد عدد را داخل یه آرایه بریزیم بعد به صورت رندم یه کلید از این آرایه را انتخاب کنه و بعد به خروجی ببره و بعد اون کلید را از آرایه پاک کنه ؟!
    نظرتون چیه ؟
     
    نوشته شده توسط ALYREZA در ‏27 فوریه 2013
  4. kassit

    kassit Member

    ارسال‌ها:
    52
    تشکر شده:
    22
    امتیاز دستاورد:
    6
    تفاوتی چندانی نداره دوست عزیز، فقط باید DISTINCT حذف بشه.
    اگه قرار بود پدر MySQL با 100 تا رکورد و یه RAND در میومد باید توسعه دهندگانش تا حالا بازنشست شده بودن دوست گرامی. اتفاقی که در استفاده از RAND در این صد رکورد می افته اصلا قابل ارزیابی نیست و این موضوع تا 100 هزار رکورد هم مشکلی پیش نمیاره.

    ریختن مقدادیر توی آرایه می تونه مشکل رو حل کنه اما یه کار اضافه است. ضمن اینکه با یک shuffle هم می شه آرایه رو تضادفی مرتب کرد و نیازی به استفاده از اندیس های تصادفی نیست.
     
    نوشته شده توسط kassit در ‏28 فوریه 2013

به اشتراک بگذارید