Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Então, suponhamos que tenha uma tabela com dados de um post. nessa tabela no mysql possui o id do post e o id do usuario. Eu queria fazer uma consulta que retorne o id do usuario que mais possui registros nessa tabela. Ou os 10 usuarios que mais possuem registros. Simples?
Agradeço desde já!
Isso eu sei, por exemplo se eu quisesse trazer o número de registro de um id, isso eu saberia. Mas eu não quero colocar o id, eu quero trazer os ids dos usuarios que tem mais registros, tipo fazer um ranking, sabe?
Alguém me ajuda, é uma coisa aparentemente tão simples, e eu não acho o que eu quero no google...
Na tabela:
Usuário x
id 1
TotalPosts 10
No caso, você fazeria uma consulta, dando order by no total de posts. E no insert desse post, você daria um update, incrementando o valor em 1, para indicar que ele fez um novo post.
Então, eu já tenho uma tabela que tem o id do usuario e o id do post, lá nas estatisticas do usuário, para contar o número de post eu faço uma consulta a essa tabela e faço a soma de registro. Mas agora eu quero fazer um ranking, que listasse os usuários com maior número de posts, ou registros(da na mesma). Eu não sei como fazer uma busca que retorne os ids de usuario com maior número de resgistro. Eu até pensei em criar outra tabela, mas acredito(procuro) a melhor forma...
$sql = mysql_query("SELECT * FROM tabela where (posts) > 10");
Ai você substitui o 10 pelo número de posts que deseja começar a listar. Caso não seja isso, um order by seria o suficiente. Por exemplo:
$sql = mysql_query("SELECT * FROM tabela order by (posts) DESC");
O problema é que isso conta números, eu queria contar registros.
Eu não sei como fazer uma busca que retorne os ids de usuario com maior número de resgistro. Eu até pensei em criar outra tabela, mas acredito(procuro) a melhor forma...
Você mesmo disse, dá na mesma. Você irá criar um campo com o número de posts, ou registros, que seja; depois precisará fazer um incremento à cada post do usuário, daí é só retornar com order by desc.
Usando GROUP BY, COUNT e ORDER BY, você chega ao resultado ordenado do jeito que quer. Com LIMIT 1 você traz apenas o primeiro registro (que é o que possui maior contagem)