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
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
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
SELECT * FROM xxxxxx ORDER BY RAND() LIMIT 0,100
prova cosi
Ciao Daniele,
ma come faccio a dirgli che me ne servono solo 20?
Mi da questo errore:
Line 1: Incorrect syntax near 'LIMIT'.
Come posso fare?
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
SELECT * FROM xxxxxx ORDER BY RAND() LIMIT 0,20
però ora non so se funge con Access
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
%>
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
io non l'ho mai utilizzata quella forma, però credo che dovrebbe essere corretta.
buona fortuna