Guest - Sperto_Rox - Postado Janeiro 25, 2006 Denunciar Share Postado Janeiro 25, 2006 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 seguinteFazer a consulta e contar os 10 mais so pra deposi listar .. como q eu faço?alguém tem uma ideia? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ::vinicius:: Postado Janeiro 25, 2006 Denunciar Share Postado Janeiro 25, 2006 Como esta sendo alimentado esse campo reclamado?? A cada reclamacao, o registro é atualizado +1?Caso seja assim, é só dá um SELECT * FROM tabela ORDER BY reclamado DESC LIMIT 10 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Janeiro 25, 2006 Denunciar Share Postado Janeiro 25, 2006 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 M@luco Belez@ Postado Janeiro 25, 2006 Denunciar Share Postado Janeiro 25, 2006 fala +- como q tá a estrutura das tabelas que fica mais fácil do pessoal te ajudar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ::vinicius:: Postado Janeiro 26, 2006 Denunciar Share Postado Janeiro 26, 2006 Vê se eu entendi: A cada reclamação, uma nova linha de registro???No caso, eu entro e reclamo da telemar. (linha 1 da tabela)M@luco entra e tb reclama da telemar (linha 2 da tabela)e assim por diante... é desta forma?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 gross Postado Janeiro 26, 2006 Denunciar Share Postado Janeiro 26, 2006 Só via SQL possivelmente você obtenha o resultado que você espera. Explique melhor como está a estrutura das tabelas que agente monta pra você a query... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Guest Postado Janeiro 26, 2006 Denunciar Share Postado Janeiro 26, 2006 é 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ::vinicius:: Postado Janeiro 26, 2006 Denunciar Share Postado Janeiro 26, 2006 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Hawker Postado Janeiro 26, 2006 Denunciar Share Postado Janeiro 26, 2006 Bem, vou dar uma idéia basica de como fazer, mas sem dar o codigo prontovocê 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 10Particularmente, prefiro a segunda opção.Abraços! Citar Link para o comentário Compartilhar em outros sites More sharing options...
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
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.