[Php-avanzado] Duda con query mysql

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Jue Ene 6 22:02:39 ARST 2011


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
-- 

Leonardo Tadei
leonardot en pegasusnet.com.ar
http://blog.pegasusnet.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



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