Cita:
Pretendo que coja algunas fotos, pero sin repetir art (es un numero), y que los seleccione aleatoriamente... Pero nada, se generan aleatoriamente pero repitiendo art... "SELECT DISTINCT art,img FROM fotos ORDER BY RAND() LIMIT 0, 10";
| |||
Qué hay mal en este Select? Cita: Pretendo que coja algunas fotos, pero sin repetir art (es un numero), y que los seleccione aleatoriamente... Pero nada, se generan aleatoriamente pero repitiendo art... "SELECT DISTINCT art,img FROM fotos ORDER BY RAND() LIMIT 0, 10"; |
| |||
Respuesta: Qué hay mal en este Select? No he usado nunca esa funcion "rand()", pero por logica el order by debe ir la columna con la cual deseas el ordenamiento, por otro lado el distinct se aplica tanto para art y img. quizas algo asi deberia funcionarte: Select DISTINCT(art),img from fotos ORDER BY RAND(art) limit 0,10 |
| |||
Respuesta: Qué hay mal en este Select? Antes de nada, gracias por la respuesta =) No funciona, directamente no da resultados... He probado con: Cita: Pero tampoco da resultados...Select DISTINCT (art),img from fotos ORDER BY RAND() limit 0,10 Alguien me puede guiar? Gracias |
| |||
Respuesta: Qué hay mal en este Select? El problema es que tienes que seleccionar 10 art distintos, tras ordenar todos los art al azar, y luego, también ordenándolos todos (?) al azar, seleccionar 10 registros con referencia a esos 10 art elegidos. Si tienes menos de 10 art te mostrará líneas según el número de art que tengas: mi propuesta es esta: Cita: Tengo mis dudas sobre si en la fase de selección de los registros tienes la posibilidad de seleccionar al azar todos los que tengan como art un art seleccionado. SELECT f.id, f.art, f.img FROM fotos f INNER JOIN ( SELECT art FROM fotos GROUP BY art ORDER BY rand( ) LIMIT 10 )t1 ON f.art = t1.art GROUP BY f.art ORDER BY RAND( ) LIMIT 10 Te diré, finalmente, que esto es fácil de hacer con programación. Seleccionas todos al azar y luego con un bucle vas guardando uno a uno, evitando las repeticiones de art, hasta llegar a 10. Última edición por jurena; 02/09/2008 a las 14:39 |
| |||
Respuesta: Qué hay mal en este Select? Uiii.. no entiendo mucho de la última respuesta, creía que sería algo más sencillo... Al hacerlo así me aparecen siempre las mismas fotos, por lo que hay algún RAND que no funciona bien... pero de momento no se repiten los art... Cómo se podría hacer del todo bien?? GRACIAS de verdad |
| |||
Respuesta: Qué hay mal en este Select? Prueba esta y me dices... Cita: Primero ordeno al azar los registros; luego relaciono esos registros con esos id agrupando por art(para que no se repita el art) y ordenando al azar y eligiendo los 10 primeros. No estoy seguro, pero haz pruebas con tus registros... SELECT f.id, art, img FROM fotos f INNER JOIN ( SELECT id FROM fotos ORDER BY rand( ) )t1 ON f.id = t1.id GROUP BY art ORDER BY rand( ) LIMIT 10 |
| ||||
Respuesta: Qué hay mal en este Select? Hola jurena, cómo vas? La instrucción ON qué hace?? no en la consulta... sino en general.... Saludos man ![]()
__________________ Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo) www.programandoweb.com |
| |||
Respuesta: Qué hay mal en este Select? La instrucción on no existe como independiente, que yo sepa. A lo que te refieres es al on de INNER JOIN... ON... ese on, como bien sabes, sirve para establecer los datos coincidentes de qué campos se unen al hacer el cruce de tablas. Pero lo que quizás despista es que no estoy uniendo dos tablas, sino tablas con una selección de datos de una tabla, lo que aparece entre paréntesis y a la que hay que poner un alias: en el texto yo le he puesto t1. ¿era esa tu duda Carxl? Esos cruces permiten hacer una consulta de la que te traes varios valores y mediante el cruce puedes recuperar otros. Cuando se hacen agrupaciones, sólo el valor del campo por el que se agrupa y los resultados como SUM, MAX, etc. se mantienen y pueden traerse; para traerte lo demás, primero haces una selección de la que te traes el valor de agrupación y el id, gracias al cual, mediante un inner join, puedes traerte lo demás... Saludos, Carxl |
| ||||
Respuesta: Qué hay mal en este Select? Gracias por la explicación Jurena... ![]() Saludos ![]()
__________________ Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo) www.programandoweb.com |