Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/07/2014, 12:55
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: consulta sobre mysql

Una vista es un aconsulta que se ejecuta neuvamente cada vez que se invoca a la misma, y por consecuencia siempre se refrescará, dando lugar a la posibilidad de que los mismos registros aparezcan en cada llamada.
Eso es inevitable, tal como lo has hecho, y es el comportameinto normal my esperable.

La única posibilidad que veo es, o bien excluir los ID de los que ya se mostraron en cada nueva consulta, o bien realizar dos consultas:
- En la primera obtienes todos los IDs de los registros, ordenados aleatoriamente, pero sólo los ID. Nada más.
- La segunda consulta y subsiguientes, la realizas con la clausula ORDER BY y usando la función FIELD() sobre el campo de ID, y le pasas como parámetro el segmento de bloque de IDs, según se necesite.
Lo que NO puedes hacer es poner en ese caso el ORDER BY RAND() en la vista. No sirve. No es funcional.

O sea, la vista sería una vista normal
Código MySQL:
Ver original
  1. CREATE OR REPLACE VIEW vistaProductos
  2. SELECT id, a, b, c, d, e
  3. FROM tabla;

Luego haces un
Código MySQL:
Ver original
  1. FROM vistaproductos
Con el resultado de eso, luego creas programaticamente las llamadas a la misma vista, pero con un segmento de los IDs obtenidos, por ejemplo, diexz de ellos, tal que la query quede armada así:
Código MySQL:
Ver original
  1. FROM vistaproductos
  2. WHERE id IN(ID, 23, 185, 6, 91, 47, 11, 3, 99, 68, 325)
  3. ORDER BY FIELD(ID, 23, 185, 6, 91, 47, 11, 3, 99, 68, 325);

¿Se entiende la idea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)