Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

mostrar rango de numeros

Estas en el tema de mostrar rango de numeros en el foro de Mysql en Foros del Web. Hola quiero mostrar un numero aleatorio partiendo de un rango de numeros por ejemplo 1 al 10 pero excluyendo numeros que tengo en un campo ...
  #1 (permalink)  
Antiguo 30/09/2016, 09:29
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
mostrar rango de numeros

Hola quiero mostrar un numero aleatorio partiendo de un rango de numeros por ejemplo 1 al 10 pero excluyendo numeros que tengo en un campo esto ultimo no se como deberia hacerlo hice esto:

Código MySQL:
Ver original
  1. select round(rand()*10)as aleatorio where aleatorio not in(select numero from registros)


realmente no funciona, y no se como excluir los numeros, entiendo que el aleatorio ya esta selecionado y no se puede cambiar.
Alguna idea para hacer esto?
saludos.

Última edición por roboty; 30/09/2016 a las 10:14
  #2 (permalink)  
Antiguo 30/09/2016, 13:18
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: mostrar rango de numeros

Hola roboty:

La idea de tu consulta es correcta, sin embargo, no puedes utilizar el campo "aleatorio" en el where ya que es un campo calculado y por lo tanto "existe" sólo después de que se ejecuta la consulta... Podrías intentarlo de la siguiente manera:

Código MySQL:
Ver original
  1. select aleatorio
  2.   ( select round(rand()*10) as aleatorio ) T
  3. where aleatorio not in ( select numero
  4.                          from registro);

En otras palabras, ejecutar como subconsulta el SELECT para obtener el número aleatorio y después filtrar el valor. El problema con esta consulta es que cuando sea el caso de que el número aleatorio generado exista en la tabla registro, entonces el resultado de la consulta será un vacío. Lo que se me ocurre es que en lugar de hacer esto, hagas un Procedimiento Almacenado con un ciclo, el cual se ejecute "infinitamente" hasta que encuentres un número que te sirva.

Haz la prueba y nos comentas.

Saludos
  #3 (permalink)  
Antiguo 30/09/2016, 14:15
 
Fecha de Ingreso: abril-2011
Mensajes: 867
Antigüedad: 13 años
Puntos: 5
Respuesta: mostrar rango de numeros

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola roboty:

La idea de tu consulta es correcta, sin embargo, no puedes utilizar el campo "aleatorio" en el where ya que es un campo calculado y por lo tanto "existe" sólo después de que se ejecuta la consulta... Podrías intentarlo de la siguiente manera:

Código MySQL:
Ver original
  1. select aleatorio
  2.   ( select round(rand()*10) as aleatorio ) T
  3. where aleatorio not in ( select numero
  4.                          from registro);

En otras palabras, ejecutar como subconsulta el SELECT para obtener el número aleatorio y después filtrar el valor. El problema con esta consulta es que cuando sea el caso de que el número aleatorio generado exista en la tabla registro, entonces el resultado de la consulta será un vacío. Lo que se me ocurre es que en lugar de hacer esto, hagas un Procedimiento Almacenado con un ciclo, el cual se ejecute "infinitamente" hasta que encuentres un número que te sirva.

Haz la prueba y nos comentas.

Saludos
Gracias, estudiare tu consulta pero creo que lo mejor sera usar programacion, saludos.

Etiquetas: campo, numeros, rango, select, tabla
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 22:31.