Buenos días.
necesito almacenar 2 registros escogidos aleatoriamente de una tabla llamada usuario, y que se almacene en una tabla llamada ganadores.
Quiero que esto se haga automáticamente 1 vez al día.
Es posible?
| |||
recoger 2 registros diarios aleatoriamente Buenos días. necesito almacenar 2 registros escogidos aleatoriamente de una tabla llamada usuario, y que se almacene en una tabla llamada ganadores. Quiero que esto se haga automáticamente 1 vez al día. Es posible? |
| ||||
Respuesta: recoger 2 registros diarios aleatoriamente Cita: Para el proceso automático, debes usar EVENT.Quiero que esto se haga automáticamente 1 vez al día. En el SELECT deberás usar RAND() y LIMIT. Fuera de eso, postea qué intentaste...
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: recoger 2 registros diarios aleatoriamente Buenas tardes. He estado haciendo unas pruebas con el event y por fin lo he echo funcionar, pero ahora tengo un problemilla que no se subsanar.
Código SQL:
Ver original El problema que tengo es que con esta sentencia podría darse el caso de que los dos usuarios resultantes del random fuesen el mismo. Me podéis ayudar a solucionarlo? |
| |||
Respuesta: recoger 2 registros diarios aleatoriamente Cita: El problema que tengo es que con esta sentencia podría darse el caso de que los dos usuarios resultantes del random fuesen el mismo.
Código MySQL:
Ver original Ahora ya no Cita: ????Quiero que esto se haga automáticamente 1 vez al día. Cita: !!!!!EVERY 1 MINUTE (nombre es la PK?)
__________________ Quim -------------------------------------------------- Ayudar a ayudar es una buena práctica!!! Y da buenos resultados. |
| |||
Respuesta: recoger 2 registros diarios aleatoriamente Si le pongo limit 2 solo me guarda el primer registro. Lo del every 1 minute lo tengo para no tener que esperar 1 día para ver los cambios.... |
| |||
Respuesta: recoger 2 registros diarios aleatoriamente Buenas de nuevo. Ya guarda bien los dos registros. voy a dejarlo activado un rato a ver si se repiten los registros. doy por echo que deberia ser imposible porque si los esta ordenando aleatoriamente.... Muchas gracias por vuestra ayuda |
| ||||
Respuesta: recoger 2 registros diarios aleatoriamente Cita: doy por echo que deberia ser imposible porque si los esta ordenando aleatoriamente.... Depende... SI ese campo es PK de la tabla "aleatorio", y la tabla "usuarios" tiene un numero finito de registros, la cantidad de inserciones irá reduciéndose hasta el punto de detenerse, por simple cuestión estadística. Si por otro lado, hicieras una rutina para verificar que no exista antes de insertarlo, el tiempo se extenderá hasta el infinito. La explicación de por qué es algo larga.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: recoger 2 registros diarios aleatoriamente efectivamente se me repiten los registros... y existe alguna manera sencilla de solucionarlo? la pk son los ids respectivos de cada tabla |
| ||||
Respuesta: recoger 2 registros diarios aleatoriamente Empecemos por el principio: ¿Qué es lo que define a los ganadores? ¿Tiene un ciclo de corte, como por ejemplo, un "sorteo" cada X tiempo? Si se trata de un sorteo al azar, la repitencia es perfectamente válida. Pero si es una selección que sólo puede ocurrir una vez, entonces tienes que resolverlo por medio de un store procedure, porque deberás hacerlo en más de una sentencia. Es decir, cada selección deberá al mismo tiempo verificar que no exista previamente, lo que podría resultar de este tipo de consulta:
Código MySQL:
El problema es que no puedes consultar la misma tabla que estás escribiendo en la misma sentencia. AL menos no en MySQL.Ver original Por eso necesitarías un SP, que sí puede hacerlo, porque podrías crear una tabla temporal para almacenarlo hasta la inserción. Algo como
Código MySQL:
Ver original Como la tabla "usersorteo" se borra automáticamente cada vez que el SP se termina de ejecutar, no se repetirían jamás los nombres. Además de esto, te sugiero que generes un indice UNIQUE sobre el campo "user" de la tabla aleatorios.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: recoger 2 registros diarios aleatoriamente La cosa es que cada dia se van a seleccionar dos usuarios de entre todos los registrados en la web. en realidad no ganan nada, solo se mostraran en pantalla esos 2 usuarios, y lógicamente no pueden ser el mismo ya que no quedaría demasiado bien. esta ultima sentencia va al final del evento? |
| ||||
Respuesta: recoger 2 registros diarios aleatoriamente
Código SQL:
Ver original
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: recoger 2 registros diarios aleatoriamente Si un usuario es elegido una vez ya no podrá ser elegido una segunda vez? Si es así @gnzsoloyo ya te dio la solución, ahora bien llegará un momento en que no podrás elegir nuevos usuarios, o solo se elegirá entre los que se hayan dado de alta des de el último "sorteo"... si solo se han dado de alta 2 saldran esos 2. Seria como elegir usuarios sin retornarlos al conjunto inicial. Por otro lado no confundas elegir aleatoriamente elementos de un conjuto con el hecho de que no se te repitan... Si un elemento de un conjunto es elegido aleatoriamente el dia 1 al dia siguiente tiene exactamente las mismas posibilidades de ser elegido que cualquier otro elemento del conjunto, puesto que los eventos son independientes. En este caso seria elegir usuarios retornandolos al conjunto inicial.
__________________ Quim -------------------------------------------------- Ayudar a ayudar es una buena práctica!!! Y da buenos resultados. |
| |||
Respuesta: recoger 2 registros diarios aleatoriamente Si, no me preocupa que se repita al dia siguiente. el problema le tengo en que en ocasiones los usuarios elegidos el mismo día, son el mismo usuario. Pero tienen que entrar todos en el sorteo todos los dias. |
| |||
Respuesta: recoger 2 registros diarios aleatoriamente Esto siempre te dará dos usuarios distintos. Siempre que "nombre" sea único, por esto te preguntaba si era PK. Usuarios id Nombre 1 Juan 2 Juan 3 María (si en este caso sale dos veces Juan seguro que estará dando el usuario 1 y el usuario 2) Encambio
Código MySQL:
Ver original puede dar dos veces el mismo usuario. Usuarios id Nombre 1 Juan 2 Juan 3 María (si en este caso sale dos veces Juan puede que salga dos veces el usuario 1, dos veces el 2 o el 1 y el 2)
__________________ Quim -------------------------------------------------- Ayudar a ayudar es una buena práctica!!! Y da buenos resultados. Última edición por quimfv; 17/02/2014 a las 06:19 |
| |||
Respuesta: recoger 2 registros diarios aleatoriamente volvere a probar pero no se porque me daba 2 registros iguales. por eso no entendía nada. Un saludo |
| ||||
Respuesta: recoger 2 registros diarios aleatoriamente Cita: No exactamente. En el EVENT llamas al SP.En cuanto al tema de la repitencia, ¿cuál es exactamente el problema de que se repita dos veces el mismo usuario? Si el tema es que no se repita dos días seguidos, simplemente mantienes un registro de los que se seleccionaron, junto con la fecha de selección y lo pones como parte del filtro. Es decir, que no sólo filtre por nombre, sino que además lo haga descartando aquellos que hayan sido seleccionados en los X días anteriores al presente. Algo como:
Código SQL:
Eso haría que se repitan aquellos que se publicaron hace más de una semana. Ver original
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
Respuesta: recoger 2 registros diarios aleatoriamente Parece que el problema es elegir dos veces al mismo el mismo dia,.... no en dias sucesivos, entiendo que con ORDER BY rand() LIMIT 2 debe quedar resuelto.
__________________ Quim -------------------------------------------------- Ayudar a ayudar es una buena práctica!!! Y da buenos resultados. |
Etiquetas: |