La idea es hacer un corte de control con el resultado, entonces el order es muy importante.
Lo que pretendo es que queden primeras las categorias con posts mas recientes, pero a su vez un limite de los ultimos 10 posts de la categoria. Ya que si hago un limit general, si en una categoria tengo 20 posts en el ultimo mes y en otra tengo 10 posts en un total de 4 meses, tambien quiero esos 10 posts.
La query basica seria
Código SQL:
Ver original
SELECT Posts.id , Categorias.id FROM Categorias INNER Posts ON Posts.idCategorias = Categorias.id ORDER BY Posts.fecha DESC LIMIT 10
Probe hacer algo como
Código SQL:
Ver original
ORDER BY ( SELECT idCategorias FROM Posts ORDER BY fecha DESC LIMIT 1 ) , Posts.fecha DESC
Pero vi que no tenia sentido..
Una posible mala solucion seria hacer un union por cada categoria, pero estaria harcodeando la cantidad de categorias
Código SQL:
Ver original
( SELECT .. FROM posts, INNER JOIN categorias .. ORDER BY fecha DESC LIMIT 10 ) UNION ( SELECT .. FROM posts, INNER JOIN categorias .. ORDER BY fecha DESC LIMIT 10 ) ORDER BY [algo que ponga primero a las categorias con posts mas recientes pero a su vez respete el orden por fecha de los posts]
El problema es que los selects deberian seleccionar solo de una categoria, y me parece que asi todos traerian los mismos posts
intente hacer algo de eso pero no obtuve resultados..
A simple vista parece sencillo, pero tiene sus vueltas..
agradesco su ayuda.
Saludos