Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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...
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
aê, a última ali funcionou... era isso mesmo
valeu =)
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