Jump to content
Fórum Script Brasil
  • 0

Os 10 Mais


Guest - Sperto_Rox -

Question

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 to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

ai é que ta o problema vinicius .. eu tenho que contar os processos referente ao RECLAMADO X e depois so mostrar os 10 que tem mais processos..

meio complicado

Link to comment
Share on other sites

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.6k
×
×
  • Create New...