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

[SOLUCIONADO] La PRIMERA VEZ ES INOLVIDABLE

Estas en el tema de La PRIMERA VEZ ES INOLVIDABLE en el foro de Bases de Datos General en Foros del Web. Hola mis amiguitos bellos, hoy tengo la siguiente pregunta a ver quien se gana un beso: La PRIMERA vez es inolvidable, por eso es que ...
  #1 (permalink)  
Antiguo 13/04/2015, 20:35
Avatar de julia2021  
Fecha de Ingreso: diciembre-2014
Ubicación: Mexico
Mensajes: 152
Antigüedad: 9 años, 4 meses
Puntos: 11
Sonrisa La PRIMERA VEZ ES INOLVIDABLE

Hola mis amiguitos bellos, hoy tengo la siguiente pregunta a ver quien se gana un beso:

La PRIMERA vez es inolvidable, por eso es que quiero mostrar una serie de imagenes de manera aleatoria, sin embargo la PRIMERA imagen siempre debe ser la misma y el resto en orden aleatorio.

Se como hacer la consulta aleatoria, pero cómo hacer que el primer registro sea siempre el mismo me tiene loca !!!!!!

Aquí mi código:
Código SQL:
Ver original
  1. SELECT * FROM tbl_banners ORDER BY RAND()
Cita:
EDITADO: código de programación no permitido en foros de bases de datos
Alquien que me pueda ayudar???, el que lo haga, le regalo un besito

Última edición por gnzsoloyo; 13/04/2015 a las 20:54
  #2 (permalink)  
Antiguo 13/04/2015, 20:56
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, 4 meses
Puntos: 2658
Respuesta: La PRIMERA VEZ ES INOLVIDABLE

Para hacer lo que quieres debes usar UNION, tal que el primer select devuelva la imagen constante, y el segundo las aleatorias.
__________________
¿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 14/04/2015, 00:19
(Desactivado)
 
Fecha de Ingreso: abril-2015
Ubicación: España
Mensajes: 616
Antigüedad: 9 años
Puntos: 74
Respuesta: La PRIMERA VEZ ES INOLVIDABLE

Código SQL:
Ver original
  1. SELECT *
  2. FROM tbl_banners
  3. WHERE id = 1
  4.  
  5. UNION
  6.  
  7. SELECT *
  8. FROM tbl_banners
  9. WHERE id <> 1
  10. ORDER BY RAND()

Última edición por superweb360; 14/04/2015 a las 02:36
  #4 (permalink)  
Antiguo 14/04/2015, 05:57
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, 4 meses
Puntos: 2658
Respuesta: La PRIMERA VEZ ES INOLVIDABLE

Cita:
Iniciado por superweb360 Ver Mensaje
Código SQL:
Ver original
  1. SELECT *
  2. FROM tbl_banners
  3. WHERE id = 1
  4.  
  5. UNION
  6.  
  7. SELECT *
  8. FROM tbl_banners
  9. WHERE id <> 1
  10. ORDER BY RAND()
La idea básica es esa, pero esa query no dejaría necesariamente el primer registro encontrado en el primer lugar, ya que el ORDER BY, como los GROUP BY que se pudiesen poner, aplican sobre el restultado total, lo que modificaría la tabla obtenida.
Para que fucione correctamente, tal como superweb360 propone, en realidad hay que transformar la segunda en una tabla derivada, y además usar UNION ALL, para evitar ordenamientos implicitos:
Código SQL:
Ver original
  1. SELECT *
  2. FROM tbl_banners
  3. WHERE id = 1
  4. UNION ALL
  5. SELECT *
  6. FROM
  7.     (SELECT *
  8.     FROM tbl_banners
  9.     WHERE id <> 1
  10.     ORDER BY RAND()) T1;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 14/04/2015, 07:14
(Desactivado)
 
Fecha de Ingreso: abril-2015
Ubicación: España
Mensajes: 616
Antigüedad: 9 años
Puntos: 74
Respuesta: La PRIMERA VEZ ES INOLVIDABLE

¿UNION ALL evita ordenamientos implícitos? Lo que hace UNION ALL es simplemente permitir valores duplicados, ¿no?
  #6 (permalink)  
Antiguo 14/04/2015, 07:16
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, 4 meses
Puntos: 2658
Respuesta: La PRIMERA VEZ ES INOLVIDABLE

MySQL genera ordenamientos implícitos.
UNION ALL evita que apliquen cambios de ordenamiento basado en restultados.
Y de todos modos, lo del ORDER BY en la query que planteaste es real: Hubiese ordenado todo al final...

Eso dice expresamente el manual de referencia.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 14/04/2015, 07:20
Avatar de julia2021  
Fecha de Ingreso: diciembre-2014
Ubicación: Mexico
Mensajes: 152
Antigüedad: 9 años, 4 meses
Puntos: 11
Respuesta: La PRIMERA VEZ ES INOLVIDABLE


No sé como lo hacen, pero les digo que me funciono a la primera, Uds, son lo MÁXIMOOOOO.

Un gran beso a gnzsoloyo y otro gran beso a superweb360.

Estoy feliz de contar con Uds.

Última edición por gnzsoloyo; 14/04/2015 a las 07:58 Razón: Texto inmirable a causa del color... :P
  #8 (permalink)  
Antiguo 14/04/2015, 07:27
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: La PRIMERA VEZ ES INOLVIDABLE

Cita:
Iniciado por julia2021 Ver Mensaje

No sé como lo hacen, pero les digo que me funciono a la primera, Uds, son lo MÁXIMOOOOO.

Un gran beso a gnzsoloyo y otro gran beso a superweb360.

Estoy feliz de contar con Uds.
Jajajjaa lo bueno es que con besos se paga la consultoria jajajajaja
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: mysql, query, rand, sql-sentencia
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 08:47.