inicio
salta!
archivo
categorias
fotoblog
tumblelog
sa.bros.us
últimos comentarios
contacto
acerca
 
 
 
entradas
comentarios
fotoblog
Agregar a Feedness
 
buscar

Agrega b3co.com al firefox
 
 
 
 
 

la lista completa
 
 
 

 Bitacoras.com

Blogalaxia

Licencia de los textos:

Creative Commons License


Licencia de las fotografias:

Creative Commons License
 
Aleatorios con MySQL
mysql
Recientemente se me ocurrió una idea, estoy seguro de no ser el primero en utilizarla, pero a los coders a ver qué les parece.

Problema: tengo una tabla en una base de datos, indizada con un entero autoincrementable, pero tiene varias características a considerar:
- el id, no necesariamente empieza en 1
- los id's son discontinuos (por ejemplo, del id 740 sigue el 768, estando vacios los id's 741-767)

Teniendo en cuenta esto, quiero sacar uno o varios registros aleatoriamente. Supongamos que queremos los campos "nombre" y "mail".

Solución viable ineficiente (la he visto más de alguna vez):
1.- select id from tabla y meterlos a un arreglo llamado $ids
2.- $id_rand = ids[rand(0,count($ids))], además que no me termina de gustar el rand() de PHP
3.- select nombre, mail from tabla where id = $id_rand

Solución eficiente:
1.- select nombre, mail, rand() as a from tabla [where...] order by a limit 0,n, donde n es el número de registros aleatorios que queremos (1, 2, ...)

Y ya, en un solo paso tenemos los registros aleatorios que gustemos, en vez de tener que traer los id's, insertarlos a un arreglo gastando memoria de a gratis. Además los problemas de discontinuidad valen madres.  
 
EnvÌa a: del.icio.us enchÌlame
Envía este artículo a un amigo
Funcionalidad en fase b3ta
su email:
tu nombre:
comentario (opcional):
 
Comentarios (7)...
 
#1 »jordi hace 30 meses(2.5 años) [3-02-06 04:36:21] escribió:
más fácil:

select nombre, mail from tabla order by RAND();
...pero también ha comentado por aca →
 
#2 »Rafael hace 30 meses(2.5 años) [4-02-06 02:04:15] escribió:
Lo usaste para lo de "5 blogs aleatorios" de la barra lateral? Está bueno.
Y buena solución.
...pero también ha comentado por aca →
 
#3 »saffog hace 30 meses(2.5 años) [4-02-06 08:19:02] escribió:
Siempre son más elegantes las soluciones que utilizan una consulta de sql o al menos a mi me gustan más que las soluciones que impliquen el uso de variables auxiliares y dobles consultas .... etc
...pero también ha comentado por aca →
 
#4 »Rafael hace 30 meses(2.5 años) [7-02-06 03:03:05] escribió:
Órale! Ese spam si me gusta!
...pero también ha comentado por aca →
 
#5 »beco hace 30 meses(2.5 años) [7-02-06 10:08:32] escribió:
jordi: exacto, más sencillo!
rafa: lo siento, pero spam es spam, ahora tendré que ingeniármelas con esas chingaderas (no malas por cierto) pero spam al fin y al cabo.
saffog: ciertamente son además de más bonitas, generalmente más eficientes
...pero también ha comentado por aca →
 
#6 »perdon b3co hace 30 meses(2.5 años) [7-02-06 10:36:28] escribió:
No era spam, me encontre el cogido en la pagina en cuestion y solo lo copie a tu pagina para ver que era lo que pasaba.... perdon.
 
#7 »Nacho hace 30 meses(2.5 años) [7-02-06 11:44:38] escribió:
Qué era el spam o que?
...pero también ha comentado por aca →
 
Hazte leer...
 
nombre:
mail:
web site:
comentario: (consejos)
Suscribirme a la conversación. Sin SPAM, créeme, odiamos el spam.
 
Este es un espacio abierto, puedes escribir lo que gustes respetando los siguientes puntos:
1.- Lo que escribas esté relacionado con el post, si gustas contactarme puedes hacerlo aqui.
2.- Todo es cuestionable, aunque ten en cuenta que existen formas de hacerlo, evita las agresiones.
3.- Siempre hay tres verdades: tu verdad, mi verdad y la verdad, por lo que opiniones diferentes no necesariamente son equivocadas.
4.- Los comentarios son una forma de discusión abierta, por lo que al publicar uno, implícitamente entras a una discusión, con todo lo que esto representa (ser debatido, ser cuestionado, se te responda) por cualquier persona.
5.- Recuerda que puedes usar html, para poner una liga escribe:
<a href="http://loquesea.com/articulo_hido.html">Artículo chido</a>.
6.- Si quieres que cada vez que escribas aparezca un avatar con la imagen que gustes, como este:

lee este artículo.
7.- Me reservo el derecho de modificar la aplicación de mi política acerca del rel=nofollow, una cosa es dar la mano y otra que te agarren hasta las amígdalas...
Por si se te hizo tarde…
» Fotos de National Geographic  [3]
» El mar  [8]
» Recuperando el equilibrio  [5]
» Rulfo y Borges  [7]
» Auto off  [5]
» Remember The Milk  [9]
» La exposición  [11]
» Arrieros somos...  [15]
» Reducción al absurdo [corregido]  [6]
» ¿Qué tan seguro es tu password?  [7]
» La Casa de Cristal  [2]
» «Por favor»  [11]
» Evitar la «A»  [12]
» Bokeh Magazine  [2]
» Sants  [12]

--


¿Qué es esto?
Estás leyendo el blog (o bitácora) personal de beco, en donde periódicamente escribo cualquier cantidad de tonterías que me interesan, sobre todo de internet, matemáticas, fotografía, algo de código y muchas, muchas pendejadas.

Puedes buscar, saltar, revisar las categorías o quitar el polvo de los archivos cronológicamente ordenados.

Puedes suscribirte a los nuevos contenidos de este sitio via RSS agregando esta liga a tu lector preferido de feeds, o si lo prefieres, puedes suscribirte agregando aqui tu dirección de correo electrónico para que te lleguen automáticamente las actualizaciones. Puedes dejar tu dirección de correo tranquilo, créeme, aqui odiamos el spam.


M + 116