[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