نمایش نتایج 1 تا 5 از 5

نام تاپیک: انتخاب تصادفی رکوردها در SQL با رعایت اولویت Random Record with Priority

  1. #1

    Question انتخاب تصادفی رکوردها در SQL با رعایت اولویت Random Record with Priority

    با سلام
    یه جدول شامل سه رکورد دارم:
    id , text , priority
    ID=AutoNumber & Key
    priority یه فیلد عددی بین 1 تا 10 است
    نیاز به یه کوئری دارم که بصورت تصادفی 5 عدد از رکوردهای این جدول را نمایش بدهد بصورتیکه id آن تکراری نباشد و احتمال نمایش هر رکورد بر اساس مقدار فیلد priority باشد یعنی مثلا رکوردی که priority آن برابر با 6 است 2 برابر رکوردی باشد که priority برابر با 3 است و یا رکوردی که priority آن برابر با 10 است 10 برابر رکوردی که priority برابر با 1 است باشد.
    از کوئری زیر میشه استفاده کرد ولی نمیشه اولویت براش تعریف کرد

    Sql Query = SELECT Top 5 * FROM tbl_Text Order by NewID()

    با تشکر

  2. #2

    نقل قول: انتخاب تصادفی رکوردها در SQL با رعایت اولویت Random Record with Priority

    با سلام
    آیا راهی وجود ندارد؟
    با تشکر

  3. #3
    VIP آواتار رضا عربلو
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    پست
    1,597

    نقل قول: انتخاب تصادفی رکوردها در SQL با رعایت اولویت Random Record with Priority

    ابتدا بایستی priority را در جدولت اعمال کنی و از آن یک جدول جدید استخراج کنی، یکی از ساده ترین روش ها این است که رکوردی که دارای prioprity برابر 2 می باشد در جدول نتیجه 2 بار تکرار شود و ...و بعد بر روی جدول فوق select بزنی و برای اینکه 5 نتیجه غیر تکراری بدهد Group By کنی.

    البته از نظر قوانین احتمال هیچ وقت غیر ممکن نیست که 1000 بار تاس بیندازی و هر دفعه 6 بیاید. بنابر این نمی توان تضمین کرد که رکوردی که priority آن برابر با 6 است 2 برابر رکوردی باشد که priority برابر با 3 است و یا رکوردی که priority آن برابر با 10 است 10 برابر رکوردی که priority برابر با 1 است باشد
    اگر Net. نمی دانید وارد نشوید.

  4. #4

    نقل قول: انتخاب تصادفی رکوردها در SQL با رعایت اولویت Random Record with Priority

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

  5. #5
    VIP آواتار رضا عربلو
    تاریخ عضویت
    اردیبهشت 1403
    محل زندگی
    تهران
    پست
    1,597

    نقل قول: انتخاب تصادفی رکوردها در SQL با رعایت اولویت Random Record with Priority

    احتیاجی نیست که یک جدول مجازی بسازی می توانی با یک کوئری نیز به آن برسی.
    شاید یکی از ساده ترین روش ها این است که یک جدول به نام Priority با دو ستون ID از نوع autoIncrement و prty از نوع INT بسازی که در آن پریوریتی 1 یکبار و پریوریتی 2 دو بار و ... تکرار شده باشد. یعیی:
    1------------1
    2------------2
    2------------3
    3------------4
    3------------5
    3------------6
    حالا اون را در یک ویو و یا کوئری با جدول tbl_Text جوین کن به نحوی که دو تا فیلد پریوریتی ات به هم جوین شوند. یه همچین چیزی :

    SELECT dbo.tbl_Text.Id, ...
    FROM dbo.tbl_Text INNER JOIN
    dbo.Priority ON dbo.Priority.Prty = dbo.tbl_Text.Priority
    اگر Net. نمی دانید وارد نشوید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •