آژانس هواپیمایی

انتخاب تعدادی رکورد به طور تصادفی

شروع موضوع توسط tabeez ‏25 ژوئن 2007 در انجمن asp , ASP.NET

  1. tabeez

    tabeez Registered User

    تاریخ عضویت:
    ‏7 دسامبر 2006
    نوشته ها:
    260
    تشکر شده:
    0
    سلام دوستان
    میخوام تعدادی رکورد رو از جدولی درون بانک اطلاعاتی برنامم به طور تصادفی انتخاب کنم
    مثلا از بین 500 رکورد فقط 40 تارو به طور تصادفی select کنم
    ممنون میشم...
     
  2. amin_lili

    amin_lili کاربر تازه وارد

    تاریخ عضویت:
    ‏24 آپریل 2007
    نوشته ها:
    528
    تشکر شده:
    2
    محل سکونت:
    ای کاش آنجا ...
    به آخر دستور select عبارت order by NEWID() رو اضافه کن
     
  3. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    کد:
    SELECT * FROM table ORDER BY RAND() LIMIT 1,40
     
  4. tabeez

    tabeez Registered User

    تاریخ عضویت:
    ‏7 دسامبر 2006
    نوشته ها:
    260
    تشکر شده:
    0
    دوست عزیز اون قسمت Limit چیکار میکنه؟ برام 1کم توضیح بده کد رو لطفـــا!i!
     
  5. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    ()order by rand رکوردها رو به طور تصادفی مرتب میکنه. limit هم فقط 40 تای اول از اونها رو انتخاب میکنه. نتیجه میشه 40 تا رکورد تصادفی از بین کل رکوردها.
     
  6. tabeez

    tabeez Registered User

    تاریخ عضویت:
    ‏7 دسامبر 2006
    نوشته ها:
    260
    تشکر شده:
    0
    پس اون 1 چیه؟ نوشته LIMIT 1,40
    ???
     
  7. خرید بیت کوین3eo
  8. shervin

    shervin ASP.net

    تاریخ عضویت:
    ‏26 ژوئن 2005
    نوشته ها:
    6,307
    تشکر شده:
    257
    محل سکونت:
    تهران
    اگه دیتا بیست sql server هست از این دستور باید استفاده کنی
     
  9. shervin

    shervin ASP.net

    تاریخ عضویت:
    ‏26 ژوئن 2005
    نوشته ها:
    6,307
    تشکر شده:
    257
    محل سکونت:
    تهران
    اگه دیتا بیست sql server هست از این دستور باید استفاده کنی
    کد:
    SELECT top 40 * FROM TBL ORDER BY newid()
     
  10. tabeez

    tabeez Registered User

    تاریخ عضویت:
    ‏7 دسامبر 2006
    نوشته ها:
    260
    تشکر شده:
    0
    خیر دوستان، دیتا بیس من access هست و از این دستور استفاده میکنم ولی جواب نمیده، یعنی در حال عادی اگه 1 2 3 4 رو از دیتابیس بخونه، وقتی از این کد استفاده میکنم 4 3 2 1 نشون میده یعنی از آخر


    منتظرم...
     
  11. amin_lili

    amin_lili کاربر تازه وارد

    تاریخ عضویت:
    ‏24 آپریل 2007
    نوشته ها:
    528
    تشکر شده:
    2
    محل سکونت:
    ای کاش آنجا ...
    کد ASP برای گرفتن رکوردهای تصادفی از Access
    کد:
    <%
    Randomize()
    
    intRandomNumber = Int(1000*Rnd)+1
    
    strSQL = _
        "SELECT TOP 3 TableID, Field1, Rnd(" & -1 * (intRandomNumber) &
    "*TableID) " & _
        "FROM table1 " & _
        "ORDER BY 3"
    %>
    
     
  12. tabeez

    tabeez Registered User

    تاریخ عضویت:
    ‏7 دسامبر 2006
    نوشته ها:
    260
    تشکر شده:
    0
    دوست عزیز لطفا بعضی قسمتاش رو یه کم توضیح بده...
    مخصوصا رشته ای که توو strSQL ذخیره میشه....
    همچنین قسمت آخر رشته یعنی Order By 3...
    اون 3 یعنی چی؟
     
  13. tabeez

    tabeez Registered User

    تاریخ عضویت:
    ‏7 دسامبر 2006
    نوشته ها:
    260
    تشکر شده:
    0
    چی شد بالاخره؟
    دوستی ، آشنائی، غریبه ای نمیخواد کمک کنه منو؟
    منتظرماااااااااااااااااااااا..
     
  14. tabeez

    tabeez Registered User

    تاریخ عضویت:
    ‏7 دسامبر 2006
    نوشته ها:
    260
    تشکر شده:
    0
    واقعا که...
    کسی نیست جواب این سوالمو بده...
     
  15. firebird

    firebird Registered User

    تاریخ عضویت:
    ‏2 جولای 2005
    نوشته ها:
    1,424
    تشکر شده:
    9
    والله من که هر چی نگاه میکنم جوابهایی که بهت دادند کامل و کافی هست.
     
  16. tabeez

    tabeez Registered User

    تاریخ عضویت:
    ‏7 دسامبر 2006
    نوشته ها:
    260
    تشکر شده:
    0
    نه کدوم کامل و کافی هست؟
    یکی که کدش چند سطر هست رو هم سر در نیاوردم یعنی گذاشتم ولی هیچی انتخاب نمیکرد...
    شما خواهشن برام بازنویسیش کن...
    ممنون میشم...
     
  17. alireza sh

    alireza sh مدیر بازنشسته

    تاریخ عضویت:
    ‏2 ژانویه 2006
    نوشته ها:
    2,668
    تشکر شده:
    68
    محل سکونت:
    نصف جهان
    در اکسس تابع RND این کار را انجام میدهد . شما باید از ORDER BY RND() استفاده کنید

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

    کد از خود MSDN :


    کد:
    Sub BuildRandomTable(lngRequest as Long)
    
       Dim dbsRandom As Database
       Dim rstOrders As Recordset
       Dim rstRandom As Recordset
       Dim UpperLimit As Long
       Dim LowerLimit As Long
       Dim lngCounter As Long
       Dim lngGuess As Long
       Dim lngRecordCount As Long
    
       ' Assumes that this module is in the Northwind database.
       Set dbsRandom = CurrentDb
       ' Delete any existing records from tblRandom table.
       dbsRandom.Execute "Delete * from tblRandom;"
       ' Open Orders as a Table Type recordset.
       Set rstOrders = dbsRandom.OpenRecordset("Orders", dbOpenTable)
       rstOrders.MoveFirst
       LowerLimit = rstOrders!OrderID
       rstOrders.MoveLast
       UpperLimit = rstOrders!OrderID
       lngRecordCount = rstOrders.RecordCount
    
       Set rstRandom = dbsRandom.OpenRecordset("tblRandom", _
                           dbOpenDynaset)
       lngCounter = 1
    
       ' Check to make sure the number of
       ' records requested is reasonable.
       If lngRequest > lngRecordCount Then
          MsgBox "Request is greater than the total number of records."
          Exit Sub
       Else
          lngRequest = lngRequest + 1
       End If
    
    
       [B][COLOR="Blue"]Randomize[/COLOR][/B]
    
    
       Do Until lngCounter = lngRequest
          ' Generate a random number
          lngGuess = Int((UpperLimit - LowerLimit + 1) * Rnd + LowerLimit)
          ' Ensure that it exists in the Orders table.
          rstOrders.Index = "PrimaryKey"
          rstOrders.Seek "=", lngGuess
          If rstOrders.NoMatch Then
             ' Drop through and generate a new number.
          Else
             ' Check to see if it's already been used in the new table.
             rstRandom.FindFirst "lngOrderNumber =" & lngGuess
             ' If not, add it to the new table.
             If rstRandom.NoMatch Then
                With rstRandom
                   .AddNew
                   !lngGuessNumber = lngCounter
                   !lngOrderNumber = lngGuess
                   .Update
                End With
                   lngCounter = lngCounter + 1
             End If
          End If
       Loop
       ' Clean up.
       dbsRandom.Close
    
     End Sub
    



    این کد را ببینید :

    کد:
    <%@ Language="VBScript" %>
    <% Option Explicit %>
    <html>
    <head>
    <title>Selecting a random record</title>
    </head>
    <body>
    <%
    'declare your variables
    dim connection, recordset, sConnString, sql
    dim intRandomNumber, intTotalRecords, i
    
    'declare SQL statement that will query your database
    sql = "SELECT * FROM tblFriends"
    
    'create ADO connection and recordset object
    Set connection = Server.CreateObject("ADODB.Connection")
    Set recordset = Server.CreateObject("ADODB.Recordset")
    
    'define the connection string, specify database
    'driver and the location of database
    sConnString="PROVIDER=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & Server.MapPath("Friends.mdb")
    
    'Open the connection to the database
    connection.Open(sConnString)
    
    'Open the recordset object executing the SQL
    recordset.Open sql, connection, 3, 1
    'count the number of records and hold this is the variable intTotalRecords
    intTotalRecords = recordset.RecordCount
    
    [COLOR="Blue"][B]Randomize()[/B][/COLOR]
    
    intRandomNumber = Int(intTotalRecords * Rnd)
    'move to the random number returned
    recordset.Move intRandomNumber
    'open the table
    Response.write("<table border='1'><tr>")
    'loop through the total number of fields
    For i = 0 to recordset.Fields.Count - 1
    'write out the field value
    Response.write("<td>" & recordset(i) & "</td>")
    Next
    'close the table
    response.write("</tr></table>")
    
    'close the recordset and connection objects and free up resources
    recordset.Close
    Set recordset=Nothing
    connection.close
    Set connection=Nothing
    %>
    </body>
    </html>
    
    این هم یک کد دیگ در مورد Randomizeر :

    کد:
    <%
        str = ","
        str1 = ","
    	
        Do Until cnt1 = 0
            [COLOR="Blue"][B]Randomize[/B][/COLOR]
            RndNumber = Int(Rnd * rndMax)
    
            If (InStr(1, str1, "," & RndNumber & "," ) = 0) Then
    	    str1 = str1 & RndNumber & ","
    	    cnt1 = cnt1 - 1
    	    objRst.MoveFirst
    	    objRst.Move RndNumber
                str = str & objRst("id") & ","
    	End If
    
        Loop
    %>
    
     
  18. amin_lili

    amin_lili کاربر تازه وارد

    تاریخ عضویت:
    ‏24 آپریل 2007
    نوشته ها:
    528
    تشکر شده:
    2
    محل سکونت:
    ای کاش آنجا ...
    مرسی :)
    ببخشیدا !!! با توجه به سوال شما دیگه کد کامل تر از این وجود نداره . مگر اینکه شما خواسته باشید کل تابعی که اتصال به دیتابیس و چک کردن connection string و اجرا کردن sql script و گرفتن نتایج و نمایش نتایج و ... انجام می ده را بنویسیم که دوست عزیزمون آقای شیرازی زحمت کشیدن :wacko:
     
avanak عسل طبیعی و گرده گل ایرانی