Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tony_lu

[Resolvido] Listar os mais populares

Recommended Posts

Ola pessoal, td bem?

 

Preciso de uma ajuda, to fazendo um site de games, e todo usuario possui uma lista com os jogos favoritos, e a tabela esta assim:

 

codFavorito | idJogo |codUsuario

 

O idJogo, armazena o codigo do jogo e o codUsuario armazena o codigo do usuario no banco...

 

O que eu preciso é listar na tela os jogos mais populares, dessa forma tentei usar o "count" para saber qual jogo aparece mais na tabela e ordenar pelo que mais aparece, mas me retorna apenas 1 linha com o nome do jogo que tem mais registro no banco ... só que eu preciso da lista dos 10 mais....segue o sql que tentei:

 

SELECT * FROM `favoritos` a inner join jogos b ON a.idJogo = b.idJogo order by count( a.idJogo)

 

Dei o inner join na tabela de jogos para pegar o nome do jogo... enfim alguem pode me ajudar a listar os jogos que tem mais registros da tabela favoritos?

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce não postou as estruturas das duas tabelas mas creio que seja algo como o que posto abaixo

 

Limitei aos 10 mais populares mas se for todos basta tirar o LIMIT

 

 

SELECT jogos.idJogo, jogos.nome, Count( favoritos.idJogo ) AS total FROM jogos INNER JOIN favoritos ON jogos.idJogo = favoritos.idJogo GROUP BY favoritos.idJogo HAVING Count( favoritos.idJogo ) > 0 ORDER BY Count( favoritos.idJogo ) DESC LIMIT 10

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce não postou as estruturas das duas tabelas mas creio que seja algo como o que posto abaixo

 

Limitei aos 10 mais populares mas se for todos basta tirar o LIMIT

 

mario, obrigado ficou perfeito... só queria entender melhor essa query para meu conhecimento mesmo, poderia dar um resumo da sua logica?

 

obrigado mais uma vez ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu tentar explicar então

 

Esta primeira parte são os campos que selecionei e também o total de ocorrências do jogo na tabela favoritos

 

SELECT jogos.idJogo, jogos.nome, Count( favoritos.idJogo ) AS total

 

Para isso funcionar precisa fazer mais algumas coisas

 

Relacionar as tabelas que serão selecionadas

 

FROM jogos INNER JOIN favoritos ON jogos.idJogo = favoritos.idJogo

 

Precisa agrupar em torno do campo que será usado para contar os favoritos

 

GROUP BY favoritos.idJogo HAVING Count( favoritos.idJogo ) > 0

 

No fim só ordenar e limitar a quantidade de resultados desejados

 

ORDER BY Count( favoritos.idJogo ) DESC LIMIT 10

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.