Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: query random

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    483

    query random

    Ciao ragazzi,
    io devo fare una query in un DB composta da + di 100 record.
    Però io non dovrei visuarizzarli tutti e 100 ma soltanto 30 in modo casuale.
    Si può fare? esiste una funzione random?
    Grazie mille a tutti,
    francesco

  2. #2
    non so se esite una funzione random però potresti crearti un vettore con 20 numeri casuali e poi fare una query del tipo

    where id=vettore(1) and id=vettore(2) .....


    anche se mi sembra brttissima una cosa del genere

  3. #3
    SELECT * FROM xxxxxx ORDER BY RAND() LIMIT 0,100


    prova cosi

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    483
    Ciao Daniele,
    ma come faccio a dirgli che me ne servono solo 20?

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    483
    Mi da questo errore:
    Line 1: Incorrect syntax near 'LIMIT'.
    Come posso fare?

  6. #6
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877
    Che DataBase stai usando?

    In SQL Server puoi usare la funziona NEWID() che genera un ID casuale

    Es.
    SELECT TOP 30 * FROM Tabella ORDER BY NEWID()

    P.S. Vi scordate sempre tutti di specificare il tipo di DataBase... le cose cambiano parecchio ad esempio da Access a SQL Server... Per non parlare di Oracle!

    HTH
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

  7. #7
    SELECT * FROM xxxxxx ORDER BY RAND() LIMIT 0,20

    però ora non so se funge con Access

  8. #8
    Access
    Purtroppo Access non fornisce la funzione Rand() per cui ci dovremmo arrangiare effettuando 2 SELECT distinte, una per recuperare l’ultimo id inserito e una per estrarre il record random.

    Per prima cosa troviamo l’ultimo id inserito

    <%
    Set con = Server.CreateObject("ADODB.Connection")

    con.Open strConn ' da valorizzare
    SQL = "SELECT MAX(id) AS MaxId FROM tblProverbi"
    set rs = con.Execute(SQL)
    If Not rs.Eof Then
    MaxId = rs("MaxId ")
    Else
    MaxId = 0
    End If
    Rs.Close : Set rs = Nothing
    %>

    Dopodiché calcoliamo un valore casuale compreso tra 0 e l’ultimo id inserito utilizzando la funzione Rnd()

    <%
    Randomize
    RandomNumber = Rnd * MaxId
    %>
    Quindi andiamo ad estrarre un record utilizzando il numero appena calcolato:
    <%
    SQL = "SELECT TOP 1 * FROM tblProverbi WHERE id >= " & RandomNumber
    set rs = con.Execute(SQL)
    If Not rs.Eof Then
    Response.Write rs("id") & " - " & rs("proverbio")
    Else
    Response.Write "Nessun proverbio da visualizzare"
    End If
    %>

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    483
    Ma io non uso ACCESS.
    Uso il db di microsoft sql sever.
    Quindi come devo fare?
    Qundi con questa piccola query che mi hai scritto:
    SELECT TOP 30 * FROM Tabella ORDER BY NEWID()
    Vuol dire che ne visualizza soltanto 30 in modo casuale?
    ti prego dimmi di si così ho risolto tutti i problemi.

    P.S. La prossima volta indico anche che tipo di db uso.
    Grazie mille a tutti,
    francesco

  10. #10
    io non l'ho mai utilizzata quella forma, però credo che dovrebbe essere corretta.


    buona fortuna

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.