Buenas.. Desde hace un rato que me estoy rompiendo la cabeza con esto y no logro entender que es..<div>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).</div>
<div><br></div><div>En teoria la query tendría que se así:</div><div>$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";</div>
<div><br></div><div>Peor no funciona.. </div><div>Si ejecuto la subquery, si me devuelve correctamente ordenados los id de las categorias.. O sea, esto:</div><div>$query = "SELECT DISTINCT subcategory_id FROM sites ORDER BY site_add_date DESC";</div>
<div><br></div><div>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.</div><div><br></div><div>
Si cambio la subquery y le pongo a mano los ids que devuelve la subquery por separado, si funciona.. o sea, así:</div>
<div><meta http-equiv="content-type" content="text/html; charset=utf-8">$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";</div>
<div><br></div><div>Alguien tiene idea de que puede ser? Porque yo no :P</div><div><br></div><div>Saludos!<br>-- <br>Javier Alejandro Alvarez<br><br>
</div>