Ir para conteúdo

Arquivado

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

montano

[Resolvido] Top 5 de um campo

Recommended Posts

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

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

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

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

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

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

   	$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

×

Informação importante

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