Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde,
Estou com um problema para calcular o total de comentarios (sum) de todos os posts de uma categoria:
'Categoria' has many 'Posts'
'Posts' has many 'Comments'
'Comments' pertence a 'Posts'
Eu consigo pegar o total de comentarios em cada post atraves da query:
SELECT posts.id_post, posts.titulo, posts.categoria,
(SELECT COUNT(*) FROM comments WHERE comments.post = posts.id_post) AS total_comments
FROM posts ORDER BY total_comments DESC
Essa query retorna:
id_post | categoria | titulo | total_comments
56 | 1 | def | 6
89 | 2 | abc | 5
45 | 2 | klj | 5
99 | 1 | opp | 1
20 | 2 | sss | 0
Ok, agora vem o problema, eu quero exibir o total de comentarios de todos os posts juntos de cada categoria para que fique dessa maneira:
id_categoria | nome_categoria | comentarios
2 | Musica | 10
1 | Filmes | 7Para isso tentei diversas queries mas nenhuma funciona:A)
SELECT categoria.id_categoria,
categoria.nome_categoria,
SUM(total_comments) AS 'comentarios' FROM (SELECT posts.id_post, posts.titulo, posts.categoria,
(SELECT COUNT(*) FROM comments WHERE comments.post = posts.id_post) AS total_comments FROM posts) As Alias INNER JOIN categoriaRetorna:1 | Filmes | 17
B )
SELECT categoria.id_categoria, categoria.nome_categoria, (SELECT SUM(*) FROM comments WHERE comments.post = posts.id_post) AS comentarios FROM categoria LEFT JOIN posts ON posts.categoria = categoria.id_categoria ORDER BY comentarios DESCRetorna:
id_categoria | nome_categoria | comentarios
2 | Musica | 6
1 | Filmes | 4
1 | Filmes | 3
2 | Musica | 3
2 | Musica | 1
Repetindo, como eu faria para retornar minha query da seguinte forma:
id_categoria | nome_categoria | comentarios
2 | Musica | 10
1 | Filmes | 7
Alguma idéia?
Desde já agradeço
Rodrigo
Carregando comentários...