Foros del Web » Programando para Internet » PHP »

Obtener un registro aleatorio de una base de datos

Estas en el tema de Obtener un registro aleatorio de una base de datos en el foro de PHP en Foros del Web. Mi consulta es la siguiente tengo una tabla ( artistas) con los siguientes campos iden , genero , artista , hits estan almacenadas asi 12, ...
  #1 (permalink)  
Antiguo 09/03/2010, 11:07
 
Fecha de Ingreso: septiembre-2009
Mensajes: 46
Antigüedad: 14 años, 7 meses
Puntos: 1
De acuerdo Obtener un registro aleatorio de una base de datos

Mi consulta es la siguiente

tengo una tabla ( artistas) con los siguientes campos

iden , genero , artista , hits

estan almacenadas asi

12, pop , michael jackson , 12
56,reggaeton , daddy yankee , 4

asi , entonces como por cada genero hay muchos artistas , solo quiero que me de uno y que sea aleatorio

pedirle a la base de datos que seleccione a los que coincide con el genero que le voya a mandar en una consulta y luego de esta obtener un artista


cual es el codigo php para esto ?
gracias anticipadas
  #2 (permalink)  
Antiguo 09/03/2010, 11:11
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Obtener un registro aleatorio de una base de datos

Cita:
RAND(), RAND(N)

Retorna un valor aleatorio en coma flotante del rango de 0 a 1.0. Si se especifica un argumento entero N, es usa como semilla, que produce una secuencia repetible.

mysql> SELECT RAND();
-> 0.9233482386203
mysql> SELECT RAND(20);
-> 0.15888261251047
mysql> SELECT RAND();
-> 0.63553050033332
mysql> SELECT RAND();
-> 0.70100469486881
mysql> SELECT RAND(20);
-> 0.15888261251047

Puede usar esta función para recibir registros de forma aleatoria como se muestra aquí:

mysql> SELECT * FROM tbl_name ORDER BY RAND();

ORDER BY RAND() combinado con LIMIT es útil para seleccionar una muestra aleatoria de una conjunto de registros:

mysql> SELECT * FROM table1, table2 WHERE a=b AND c<d
-> ORDER BY RAND() LIMIT 1000;

Tenga en cuenta que RAND() en una cláusula WHERE se re-evalúa cada vez que se ejecuta el WHERE.

RAND() no pretende ser un generador de números aleatorios perfecto, pero es una forma rápida de generar números aleatorios ad hoc portable entre plataformas para la misma versión de MySQL.
http://dev.mysql.com/doc/refman/5.0/...functions.html

Creo que debería servir :pensnado:
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 09/03/2010, 11:14
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: Obtener un registro aleatorio de una base de datos

Con php puede ser la función rand().
En este mismo foro se ha hablado de eso: http://www.forosdelweb.com/f18/selec...-mysql-487824/ y aqui http://www.forosdelweb.com/f18/sacar...on-php-283011/.
  #4 (permalink)  
Antiguo 09/03/2010, 11:16
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: Obtener un registro aleatorio de una base de datos

Queria decir que es muy correcto eso del RAND(), pero aclarar que usar RAND() en tablas con muchos registros es meterle un tiro a la base de datos, va a sufrir mucho. En el caso de bases de datos muy grandes hay otras tecnicas para seleccionar (mas o menos al azar) un registro, como por ejemplo mirar primero cual es el ID maximo (me refiero al campo clave) y luego con php fabricar un

......WHERE ID>=".rand(0,$idmaximo)." order by ID ASC........
  #5 (permalink)  
Antiguo 09/03/2010, 11:30
 
Fecha de Ingreso: septiembre-2009
Mensajes: 46
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Obtener un registro aleatorio de una base de datos

bueno miren el codigo que puse es este

<?php

$respuesta = mysql_query("SELECT * FROM ArtistasRC WHERE `genero` like '%$code%' ORDER BY RAND() LIMIT 0, 1");
while ($row = mysql_fetch_array($respuesta))
{

echo $row[Artista];
}
?>


encontre uno parecido y le cambie unas cosas para que cumpliera la funcion que queria

esta bien este codigo ?
  #6 (permalink)  
Antiguo 09/03/2010, 11:31
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Obtener un registro aleatorio de una base de datos

¿Probaste si funciona? Si te funciona es porque está bien...
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #7 (permalink)  
Antiguo 09/03/2010, 11:45
 
Fecha de Ingreso: septiembre-2009
Mensajes: 46
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Obtener un registro aleatorio de una base de datos

si , ese codigo funciono , muchas gracias

Etiquetas: registro, aleatoria
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 05:08.