montano 0 Denunciar post Postado Setembro 9, 2009 bom dia, Estou querendo selecionar os 5 conteudo mais cadastrados na minha tabela. e jogar isso em um array, para depois eu fazer um top 5. Tem como fazer isso no SELECT? conheço COUNT, SUM mas nao conheço nada que faça isso. teria que desenvolver um algoritimo para isso? obrigado Compartilhar este post Link para o post Compartilhar em outros sites
goruks 0 Denunciar post Postado Setembro 9, 2009 para fazer isso você usa meta tags nos conteudos ou tem alguma coluna especifica que você quer contar? select conteudo, count(conteudo) from tabela group by conteudo order by count(conteudo) desc assim você sabe os mais cadastrados Compartilhar este post Link para o post Compartilhar em outros sites
montano 0 Denunciar post Postado Setembro 9, 2009 para fazer isso você usa meta tags nos conteudos ou tem alguma coluna especifica que você quer contar? select conteudo, count(conteudo) from tabela group by conteudo order by count(conteudo) desc assim você sabe os mais cadastrados tem uma coluna especifica ex: tabela cod | nome| |01 | a | |02 | b | |03 | c | |04 | a | |05 | a | |06 | c | Gostaria que me retornasce assim: a,c,b ai eu poderia jogar em um array e mostrar na tela. 1ª A com 3 aparições 2ª C com 2 aparições 3ª B com 1 aparições Tipo isso, tem como selecionar os que mais aparecem e quantas vezes isso acontece? valeu Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Setembro 9, 2009 Tipo isso, tem como selecionar os que mais aparecem e quantas vezes isso acontece? mysql> select * from `tabela`; +----+------+ | id | nome | +----+------+ | 1 | a | | 2 | b | | 3 | c | | 4 | f | | 5 | a | | 6 | c | | 7 | g | | 8 | f | | 9 | f | | 10 | d | | 11 | e | | 12 | a | | 13 | f | | 14 | d | +----+------+ 14 rows in set (0.01 sec) mysql> select `nome`,count(*) 'aparicoes' from `tabela` group by `nome` order by aparicoes desc; +------+-----------+ | nome | aparicoes | +------+-----------+ | f | 4 | | a | 3 | | c | 2 | | d | 2 | | b | 1 | | e | 1 | | g | 1 | +------+-----------+ 7 rows in set (0.00 sec) mysql> select `nome`,count(*) 'aparicoes' from `tabela` group by `nome` order by aparicoes desc limit 5; +------+-----------+ | nome | aparicoes | +------+-----------+ | f | 4 | | a | 3 | | c | 2 | | d | 2 | | b | 1 | +------+-----------+ 5 rows in set (0.00 sec) ;) Compartilhar este post Link para o post Compartilhar em outros sites
montano 0 Denunciar post Postado Setembro 9, 2009 class teste { public $top_acao = array(); function topAcao($tabela,$where){ $result = $this->execute("select acao, count(acao) from $tabela" . $where . "group by acao order by count(acao) desc"); while ($row = mysqli_fetch_assoc($result)){ $this->top_acao[] = $row['acao']; } } } <?php foreach ($obj->top_acao as $acao){ echo $acao; } ?> Isso nao esta me retornando nada :S, esse select esta correto? Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Setembro 9, 2009 function topAcao($tabela,$where){ $sql = "select acao, count(acao) from $tabela" . $where . "group by acao order by count(acao) desc"; var_dump( $sql ); $result = $this->execute( $sql ); while ($row = mysqli_fetch_assoc($result)){ $this->top_acao[] = $row['acao']; } } } Compartilhar este post Link para o post Compartilhar em outros sites
montano 0 Denunciar post Postado Setembro 9, 2009 $result = $this->execute("select acao, COUNT(cod) as total from $tabela $where group by acao order by total desc limit 5"); RESOLVIDO \o\ aeee, agradeço muito pessoal. Compartilhar este post Link para o post Compartilhar em outros sites