[Php-avanzado] Duda con query mysql

Javier Alvarez neiker en gmail.com
Vie Ene 7 10:57:40 ARST 2011


Leo, gracias por la respuesta.. Ahora si funciona.. quedó así:
         $query = "SELECT sc.subcategory_name, sc.subcategory_alias, 
c.category_alias
         FROM sites s
         JOIN sub_categories sc ON s.subcategory_id=sc.subcategory_id
         JOIN categories c ON sc.category_id=c.category_id
         WHERE s.site_approved=1
         GROUP BY s.subcategory_id
         ORDER BY s.site_add_date DESC
         LIMIT 5";

Saludos!



On 06/01/11 21:02, Leonardo Tadei - Pegasus Tech Supply wrote:
> Hola Javier,
>
> 	me parece que lo que te está pasando es que el ORDER BY que manda es el
> de la query externa, y no el de la subquery.
> 	Tu subquery devuelve un conjunto de datos ordenados, pero el orden de
> presentación del subset de resultados depende siembre del orden de la
> query más externa.
>
> 	Tendrías que plantear e proyectar en la query exterior los datos que
> necesitás ver ordenados es decir los sitios ordenados por su fecha de
> publicación, y luego hacer relaciones para obtener los datos de las
> subcategorías y categorías...
>
> 	(y hasta es posible que con algún GROUP BY o COUNT te ahorres la
> subquery)
>
> El jue, 06-01-2011 a las 13:39 -0300, Javier Alvarez escribió:
>> Buenas.. Desde hace un rato que me estoy rompiendo la cabeza con esto
>> y no logro entender que es..
>> La web, es un directorio de sitios.. y la idea es obtener las 3
>> ultimas subcategorias en donde se hayan cargado sitios.. Siendo que
>> cada sitio está en una subcategoria y cada subcategoria a su vez en
>> una categoria (3 tablas: sites, categories, sub_categories).
>>
>>
>> En teoria la query tendría que se así:
>> $query = "SELECT * FROM sub_categories LEFT JOIN categories ON
>> sub_categories.category_id=categories.category_id WHERE subcategory_id
>> IN (SELECT DISTINCT subcategory_id FROM sites ORDER BY site_add_date
>> DESC) LIMIT 3";
>>
>>
>> Peor no funciona..
>> Si ejecuto la subquery, si me devuelve correctamente ordenados los id
>> de las categorias..  O sea, esto:
>> $query = "SELECT DISTINCT subcategory_id FROM sites ORDER BY
>> site_add_date DESC";
>>
>>
>> Me devuelve 188, 32, 477, 465, 577, etc..  Pero cuando uso la query
>> completa, es como si la subquery devolviera 3, 4, 5, 6, 8, 9, etc..
>>   Como si no le diera bola al ORDER BY.
>>
>>
>> Si cambio la subquery y le pongo a mano los ids que devuelve la
>> subquery por separado, si funciona.. o sea, así:
>> $query = "SELECT * FROM sub_categories LEFT JOIN categories ON
>> sub_categories.category_id=categories.category_id WHERE subcategory_id
>> IN (188,32,477,465,577) LIMIT 3";
>>
>>
>> Alguien tiene idea de que puede ser? Porque yo no :P
>>
>>
>> Saludos!
>> -- 
>> Javier Alejandro Alvarez
>>
>>
>> _______________________________________________
>> Php-avanzado mailing list
>> Php-avanzado en pato2.fi.mdp.edu.ar
>> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado


-- 
Javier Alejandro Alvarez



Más información sobre la lista de distribución Php-avanzado