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

Busqueda aleatoria pero dividida en grupos

Estas en el tema de Busqueda aleatoria pero dividida en grupos en el foro de Mysql en Foros del Web. No se como plantearlo y busco un poco de ayuda El tema es el siguiente , pongamos que tenemos varios datos de 0 a 50 ...
  #1 (permalink)  
Antiguo 18/03/2009, 08:13
 
Fecha de Ingreso: mayo-2006
Mensajes: 22
Antigüedad: 17 años, 11 meses
Puntos: 0
Busqueda aleatoria pero dividida en grupos

No se como plantearlo y busco un poco de ayuda

El tema es el siguiente , pongamos que tenemos varios datos de 0 a 50 de valor , y en la web los de 0 a 10 cogen una imagen , los de 11 a 20 otra , etc

Si quiero hacer una búsqueda de ese valor en orden ASC que muestre los de mayor valor antes que los siguientes pero que no diferencie entre 50 y 49 , ¿como lo puedo plantear?

La función group podría servir?

Muchas gracias!
  #2 (permalink)  
Antiguo 18/03/2009, 08:26
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Busqueda aleatoria pero dividida en grupos

Buen día

Puedes hacer lo siguiente:
select *from tabla order by valor limit 0,10; //para los primeros registros de 0 a 10.
select *from tabla order by valor limit 11,10; //para los segundos registros de 11 a 20.
select *from tabla order by valor limit 21,10; //para los terceros registros de 21 a 30.

Cita:
pero que no diferencie entre 50 y 49 , ¿como lo puedo plantear?
aca si no te entendí muy bien.

Espero te sirva.
  #3 (permalink)  
Antiguo 18/03/2009, 08:46
 
Fecha de Ingreso: mayo-2006
Mensajes: 22
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: Busqueda aleatoria pero dividida en grupos

Hola huesos , creo que no me has entendido bien

A ver si logro expresarme mejor

En mi BBDD tengo un campo con un valor que oscila entre 0 y 50
Si el valor esta entre 0 y 10 la imagen en web es imagen1 (que representa un 1)
Si el valor esta entre 11 y 20 la imagen en web es imagen2 (que representa un 2)
Si el valor esta entre 21 y 30 la imagen en web es imagen3 (que representa un 3)
Si el valor esta entre 31 y 40 la imagen en web es imagen4 (que representa un 4)
Si el valor esta entre 41 y 50 la imagen en web es imagen5 (que representa un 5)

Ahora el problema viene que en un buscador yo quiero ordenar por la representación de la imagen. De 1 a 5 , pero sin que sea tenido en cuenta el valor del campo

Ejemplo:

valor campo : 12 imagen: 2
valor campo : 15 imagen: 2
valor campo : 17 imagen: 2
valor campo : 27 imagen: 3
valor campo : 28 imagen: 3

quiero que me lo muestre aleatorio , asi:

valor campo : 17 imagen: 2
valor campo : 12 imagen: 2
valor campo : 15 imagen: 2
valor campo : 28 imagen: 3
valor campo : 27 imagen: 3

Mi solución es crear un campo mas , que convierta el campo en valor de la imagen , pero lo malo es que son varios campos asi y el crecimiento de la BBDD seria muy grande
  #4 (permalink)  
Antiguo 18/03/2009, 13:13
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Busqueda aleatoria pero dividida en grupos

Por que no pones un ejemplo con los campos de tu tabla?

Tu quieres ordenar por imagen, pero no tienes imagen?
Como difícil.

Si tienes o pudieras tener un campo imagen como lo muestras en el ejemplo y lo que quieres es que se ordenen por imagen puedes hacerlo con:
select *from tabla order by imagen, rand();
De esta forma ordena inicialmente por imagen y revuelve los datos como muestras quieres tu salida.

Estuve mirando la posibilidad de hacerlo con comparaciones en la consulta pero a la hora de ordenar es complicado.

Ojala alguien mas te de una mejor respuesta.

Un saludo.
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 10:13.