Ir para conteúdo
Fórum Script Brasil
  • 0

Os 10 Mais


Guest - Sperto_Rox -

Pergunta

Guest - Sperto_Rox -

Gente é o seguinte .. eu tenho um banco com pouco mais de 51 mil registros de processos...

ai tem um campo que se chama RECLAMADOS ... o que eu queria é

listar os 10 mais reclamados .. eu pensei no seguinte

Fazer a consulta e contar os 10 mais so pra deposi listar .. como q eu faço?

alguém tem uma ideia?

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

é como o vinicius falou .. a cada reclamação a um novo registro referente a empresa X ..

tenho que contar todos os registros pra depois fazer a comparação e quem são as empresas mais reclamadas

Link para o comentário
Compartilhar em outros sites

  • 0

Cara, eu, em seu lugar, faria o seguinte:

1. Criaria uma outra tabela para armazenar o numero de reclamacoes. Tabela com nome de que foi reclamado (empresa, por exemplo) e numero (de reclamacoes).

2. Pegaria os nomes das empresas usando um loop com DISTINCT e usaria COUNT para contar o numero de reclamaçoes.

3. Gravaria o nome em tabela (ou id, sendo que prefiro id_empresa).

4. Nas proximas linhas de registro de reclamações, procuraria nessa nova tabela a empresa e incrementaria (++) em reclamações.

5. Caso não houvesse, criaria nova linha.

6. Pronto! Agora daria um SELECT e ordenaria para ter os 10 Mais!

Obs: Dessa forma, não será necessário contar os 51 mil registro toda vez que quiser mostrar os 10 Mais (ou 10 Menos)! Apenas uma vez, para que seja gravado na nova tabela os valores.

Obs2: Essa foi minha lógica. Talvez vc (ou outra pessoa) tenha um raciocínio diferente e/ou mais eficiente! =)

Falou!

Link para o comentário
Compartilhar em outros sites

  • 0

Bem, vou dar uma idéia basica de como fazer, mas sem dar o codigo pronto

você tem duas opções:

1)

primeiro, você pega o nome de todas as empresas que possuem reclamação... pode fazer isto com o comando SQL SELECT DISTINCT...

Depois, abre um for para cada empresa... faz um select pra cada uma delas e conta o numero de linhas (que no caso é igual ao numero de reclamações...)

por ultimo, basta você usar a função max pra pegar o maior valor...

2)

crie uma outra tabela no seu banco de dados, chamada reclamacoes, com 2 campos (nome e contador).

Cada vez que uma reclamação for inserida, você coloca sua linha normalmente na tabela que já tem...

Em seguida, faça um select na tabela reclamacoes pelo nome da empresa que está sofrendo a reclamação...

Se já existir algum resultado, incremente o campo contador...

Caso não exista, insira uma nova linha com o nome da empresa e com contador=1...

Depois, basta fazer um select na tabela reclamacoes como o vinicius falou...

ORDER BY contador DESC, LIMIT 10

Particularmente, prefiro a segunda opção.

Abraços!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...