Buenas, estoy tratando de hacer una query que me devuelva los ultimos 10 posts, de cada categoria, ordenados por categoria y fecha de creacion del post.
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 originalSELECT 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 originalORDER 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