Foros del Web » Programando para Internet » PHP »

Obtener fila al azar

Estas en el tema de Obtener fila al azar en el foro de PHP en Foros del Web. Hola! como puedo hacer que para atraves de una consulta mysql obtenga una fila al azar sin usar el ORDER BY rand()? Saludos...
  #1 (permalink)  
Antiguo 19/01/2007, 11:07
 
Fecha de Ingreso: diciembre-2005
Mensajes: 249
Antigüedad: 18 años, 3 meses
Puntos: 0
Obtener fila al azar

Hola!
como puedo hacer que para atraves de una consulta mysql obtenga una fila al azar sin usar el ORDER BY rand()?

Saludos
  #2 (permalink)  
Antiguo 19/01/2007, 11:25
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 2 meses
Puntos: 9
Re: Obtener fila al azar

Creo que eso podria funcionar.. Pues se hace una consulta, luego hago un random que va desde 0 hasta el numero maximo de resultados, tomas los resultados y los guarda en $res y luego el numero aleatorio se lo pongo a $res y asi ya obtuve un aleatorio de la consulta..

Código PHP:
$query mysql_query("SELECT * FROM PRODUCTOS");

$rd rand(0,mysql_num_rows($query));

$res mysql_fetch_array($query);

echo 
$res[$rd]; 
Si no es asi, por ahi va la idea.
  #3 (permalink)  
Antiguo 19/01/2007, 11:33
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Obtener fila al azar

Por que no usar rand() en el query?
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #4 (permalink)  
Antiguo 19/01/2007, 11:54
 
Fecha de Ingreso: diciembre-2005
Mensajes: 249
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Obtener fila al azar

Cita:
Iniciado por nicolaspar Ver Mensaje
Por que no usar rand() en el query?
Me dijeron que consume muchos recursos de la pc servidor.
  #5 (permalink)  
Antiguo 19/01/2007, 12:05
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Re: Obtener fila al azar

Creo que otra manera consumirá más aún.
Lo único que usa es una tabla temporal para ordenar, pero como te decía, sigue siendo lo mejor.
Usá el comando explain y fijate lo que te comento, ej:
Código:
explain select * from tabla;
explain select * from tabla order by id;
explain select * from tabla order by rand();
__________________
Mi punto de partida es Que Bueno Lo Nuevo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:09.