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

Consulta compleja con rand()

Estas en el tema de Consulta compleja con rand() en el foro de Mysql en Foros del Web. necesito saber el id menor y el ìd` mayor de la columna `id` donde la columna date sea el dia de ayer y la columna ...
  #1 (permalink)  
Antiguo 18/12/2009, 05:30
Avatar de pulento  
Fecha de Ingreso: noviembre-2002
Ubicación: En un pequeño, helado, obscuro reino... llamado Dinamarca.
Mensajes: 1.852
Antigüedad: 21 años, 5 meses
Puntos: 1
Consulta compleja con rand()

necesito saber el id menor y el ìd` mayor de la columna `id` donde la columna date sea el dia de ayer y la columna `info` sea = 9

Lo que quiero es encontrar un numero random entre estos dos valores tanto el id menor y el id mayor.

y que me imprima los datos del registro que tiene este id que seria el resultado del random.

Se me complico ... trate de usar MIN y el MAX ..pero no encontre como implementarlo.

Se entiende.?

Alguna ayudita pls..

Saludos
__________________
http://www.flotdesign.dk/
  #2 (permalink)  
Antiguo 18/12/2009, 05:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta compleja con rand()

Yo probaría algo así:
Código MySQL:
Ver original
  1. SELECT T1.*
  2. FROM TABLA1 T1 JOIN
  3.     (SELECT MIN(ID_TABLA) MINIMO, MAX(ID_TABLA) MAXIMO
  4.     FROM TABLA1
  5.     WHERE
  6.         DATE(FECHA) = DATE_SUB(CURDATE(), INTERVAL DAY 1)
  7.         AND INFO=9) T2
  8.     (T1.ID_TABLA BETWEEN T2.MAXIMO AND T2.MINIMO)
  9.     AND DATE(T1.FECHA) = DATE_SUB(CURDATE(), INTERVAL DAY 1)
  10. ORDER BY RND()
Puede que de resultado...

Nota: Usar la fecha en la consulta exterior es algo superfluo, ya que si el ID es único (PK), el BETWEEN solo debería bastar...:

Código MySQL:
Ver original
  1. SELECT T1.*
  2. FROM TABLA1 T1 JOIN
  3.     (SELECT MIN(ID_TABLA) MINIMO, MAX(ID_TABLA) MAXIMO
  4.     FROM TABLA1
  5.     WHERE
  6.         DATE(FECHA) = DATE_SUB(CURDATE(), INTERVAL DAY 1)
  7.         AND INFO=9) T2
  8.     (T1.ID_TABLA BETWEEN T2.MAXIMO AND T2.MINIMO)
  9. ORDER BY RND()
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 18/12/2009, 05:55
Avatar de pulento  
Fecha de Ingreso: noviembre-2002
Ubicación: En un pequeño, helado, obscuro reino... llamado Dinamarca.
Mensajes: 1.852
Antigüedad: 21 años, 5 meses
Puntos: 1
Respuesta: Consulta compleja con rand()

Grax gnzsoloyo
olvide decir que lo tengo dentro de un PHP... pero de ahy vere como lo adapto y lo probare llegando a la oficina.

Saludos
__________________
http://www.flotdesign.dk/
  #4 (permalink)  
Antiguo 21/12/2009, 03:37
Avatar de pulento  
Fecha de Ingreso: noviembre-2002
Ubicación: En un pequeño, helado, obscuro reino... llamado Dinamarca.
Mensajes: 1.852
Antigüedad: 21 años, 5 meses
Puntos: 1
Respuesta: Consulta compleja con rand()

Como te decia antes es para un php.
Y la solucion inspirada por ti seria esta:

$result = mysql_query("SELECT * FROM `XmasPerson` WHERE (`date` = '$dateTemp' and `infokunde` = 9) ORDER BY RAND() LIMIT 1;");

Funciona perfecto.

Grax
Saludos
__________________
http://www.flotdesign.dk/
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 19:48.