Subquery
Preciso faz uma consulta que me retorne os autores que tiveram mais acesso em seus posts.
A estrutura é a do WP, pra quem não conhece é o seguinte, tenho uma tabela de posts e nessa tabela tenho tb o id do autor.
Tenho outra tabela que tem o id do post e a qtd de vezes que esse post foi acessado.
Fazendo separadamente eu tenho essas duas querys:
// pego cada autor
SELECT b.post_author AS id_author
FROM wp_posts AS b
JOIN wp_usermeta AS c ON ( c.user_id = b.post_author AND c.meta_key = 'wp_user_level' AND c.meta_value < 5 )
WHERE b.post_status = 'publish'
GROUP BY id_author
// pego a soma de cada autor
SELECT SUM(meta.meta_value) AS total, post.post_author
FROM wp_posts AS post
INNER JOIN wp_postmeta AS meta ON ( meta.post_id = post.ID AND meta.meta_key = '_post_views' )
WHERE post.post_author = 7
AND post.post_status = 'publish'
AND post.post_type = 'post'
ORDER BY total DESC
Só que eu preciso fazer o ranking e não consegui usar subquery.
Alguém pode me dar uma luz?
Qualquer coisa posso mandar o sql
Obrigado.
Acho que consegui a subquery, mas tá lentaaaaa...
SELECT b.post_author AS id_author, (
SELECT SUM(meta.meta_value) AS total
FROM wp_posts AS post
INNER JOIN wp_postmeta AS meta ON ( meta.post_id = post.ID AND meta.meta_key = '_post_views' )
WHERE post.post_author = id_author
AND post.post_status = 'publish'
AND post.post_type = 'post'
) total
FROM wp_posts AS b
JOIN wp_usermeta AS c ON ( c.user_id = b.post_author AND c.meta_key = 'wp_user_level' AND c.meta_value < 5 )
WHERE b.post_status = 'publish'
GROUP BY id_author
ORDER BY total DESC
LIMIT 200
Discussão (2)
Carregando comentários...