Registros aleatorios en MySQL.

Resumen.

A veces no estamos interesados en mostrar todos los registros o una parte concreta de ellos, los motivos pueden ser tan diversos como la temática del sitio Web en cuestión. Mostrar unos pocos registros de manera aleatoria en cada carga de página puede ser una interesante forma de presentar de manera breve un resumen de contenidos de nuestro website. En este artículo veremos como con una simple modificación de nuestra consulta lo tenemos resuelto.

Artículo.

MySQL junto con Oracle son las bases de datos Web mas usadas con una importante diferencia sobre las demás. Esto nos lleva a pensar sin riesgo de equivocarnos que tienen solución para casi todo, y así es. Y por supuesto la tiene para mostrar un rango de registros aleatorios, o más bien, seudoaleatorios.

Vamos a tomar como referencia el artículo donde se trato como leer los registros de una tabla, donde se partió de una consulta:


$_Leer_SQL = "SELECT * FROM $tb1";



Pues bien, con solo modificar esta consulta podemos tener un conjunto de registros aleatorios, de la siguiente manera:


$_Leer_SQL = "SELECT * FROM $tb1 ORDER BY rand() LIMIT 4";



Lo único que hemos hecho ha sido agregar


ORDER BY rand() LIMIT 4



Donde ya conocemos ORDER BY y LIMIT, ahora presentamos la rand() de MySQL, que por cierto, también existe en PHP con el mismo nombre. Lo único que debemos hacer tras la función es agregar la cláusula LIMIT para determinar el número de resultados aleatorios que queremos obtener. Y listo, ya tenemos un conjunto de 4 registros que cambiarán cada vez que recarguemos la página.

Si queremos estableces una condición, solo tenemos que agregarla tras el nombre de la tabla:


SELECT * FROM $tb1 WHERE sexo = 2 ORDER BY rand() LIMIT 3



Y obtenemos así 3 registros donde son mujeres.

También podemos obtener un rango de registros consecutivos de la siguiente manera:


$aleator = mt_rand(0,97);
SELECT * FROM $tb1 ORDER BY id ASC LIMIT $aleator, 3



Donde la variable $aleator determina el registro a partir del cual mostraremos los 3 siguientes registros, dado que usamos la sentencia ASC. Como puede intuirse, si usamos DESC, aparecerán en sentido descendente. Este método tiene una particularidad con la que debemos tener cuidado, y es que si tenemos una tabla con 100 registros de la que queremos obtener 3 registros aleatorios, el rango de la función mt_rand() deberá ser mt_rand(0,97) ya que si pusiéramos 100 en lugar de 97, podría dar registros no existentes, por lo que en algunas ocasiones no se mostrarían los 3 registros solicitados.

Y con esto, concluimos este artículo que puede resultar interesante para realizar sorteos, presentar ofertas, mostrar fotos, etc.
Tags: Aleatorio || seudoaleatorio || RAND || consulta || LIMIT

Comentarios.

Sin comentarios, publica el tuyo.