Renato =) 0 Denunciar post Postado Agosto 13, 2008 Como conto semelhantes numa tabela de sql? Por exemplo, quero saber em uma tabela, o valor do campo "ESPÉCIE" que mais tem valores iguais para aparecer assim "A espécie mais frequente é: *resultado*" Por exemplo, em uma tabela ID | NOME | ESPÉCIE 01 | Deus | 1 02 | Zeus | 1 03 | Seus | 2 no caso, *resultado* seria 1, por que aparece 2 vezes Como faço isso?? Abraços Compartilhar este post Link para o post Compartilhar em outros sites
cassitos 2 Denunciar post Postado Agosto 13, 2008 bom... se tiver uma base da quantidade de ocorrências, você pode utilizar o Group By com o Having, agrupando pela espécie e retornando somente o que teve X ou mais ocorrências, ex: SELECT * FROM teste4 GROUP BY especie HAVING COUNT(*) >= 2 iria exibir uma relação com as espécies que possuem duas ou mais ocorrências, só que desta forma não iria exibir todos os registros daquela espécie, por exemplo, iria exibir somente o Deus. já que está agrupando justamente pela espécie de acordo com a definição no Having. se quiser ter uma relação completa daquelas espécies que tem as ocorrências seria algo do tipo: Select teste4.* FROM ( SELECT especie FROM teste4 GROUP BY especie HAVING COUNT(*) >= 2 ) as ocorrencias INNER JOIN teste4 ON teste4.especie = ocorrencias.especie ali na subquery destacado em verde vai retornar as espécies que possui duas ou mais ocorrências (mas sempre 1 registro de cada espécie). já na parte em azul está fazendo uma consulta na tabela para exibir todos os registros daquelas espécies que foram encontradas na subquery. só que tudo isto está definindo um mínimo de ocorrências que neste caso são duas. ps: acredito não ser a única a opção, se não ajudar vamos ver se mais alguém dá outra idéia. :P Compartilhar este post Link para o post Compartilhar em outros sites
Renato =) 0 Denunciar post Postado Agosto 13, 2008 Não entendi aquele HAVING COUNT(*)<=2 A idéia na verdade é a seguinte: tem um campo de busca no site, e quero ver qual a seção mais procurada... Quando a busca é feita, é adicionado um campo numa tabela chamada "estatisticas_busca" com a seção dessa busca... quero que de alguma forma o mysql retorne o nome da seção mais procurada entre todas... Compartilhar este post Link para o post Compartilhar em outros sites
cassitos 2 Denunciar post Postado Agosto 13, 2008 o lance do Having é uma condição que é aplicada no Group By. neste caso seriam retornados os registros agrupados pela espécie desde que o total de registros (no grupo) seja maior ou igual a 2. lembrando que no Having você pode incluir mais 'critérios'. aqui nesta documentação fala um pouco sobre o uso http://dev.mysql.com/doc/refman/5.0/en/select.html. mas pelo visto não é o seu caso. você quer a busca (seção) que é feita com mais freqüência dentre todas, seria até mais simples. você pode fazer a contagem agrupando pelo termo e ordenar decrescentemente e limitando a consulta para retornar apenas um registro, para pegar justamente o maior. seria algo assim: select especie, count(*) as quantidade from teste4 group by especie order by quantidade desc limit 1 retornaria um registro apenas, sendo que é o que possui mais ocorrências na tabela. pode ser feito desta forma também: select especie from teste4 group by especie order by count(*) desc limit 1 ou ainda não é isto? ehehe http://forum.imasters.com.br/public/style_emoticons/default/yay.gif flw Compartilhar este post Link para o post Compartilhar em outros sites
Renato =) 0 Denunciar post Postado Agosto 13, 2008 aê, a última ali funcionou... era isso mesmo valeu =) Compartilhar este post Link para o post Compartilhar em outros sites