Galera, alguem tem algum exemplo ou artigo que eu possa ler com exemplos de codigo e etc de busca facetada, o q eu quero fazer é mostrar uma area de filtros no meu site onde ele mostre tambem o numero de informações encontradas sobre aquele tema, por exemplo: laranja(12), banana(11)… tipo aqueles filtros do mercado livre e etc, sé que nao tenho ideia nem de como fazer a query disso, se alguem tiver como me ajudar agradeço, obrigado
Você pode buscar todos as informações em questão. Se elas possuem um tema, você deve fazer groupby sobre os temas existentes e um count sobre o número de informações. Algo como:[code]SELECT
TEMA.NOME TEMA, COUNT(INFO.ID) ENCONTRADOS
FROM
INFORMACOES INFO
INNER JOIN TEMAS TEMA ON INFO.TEMA = TEMA.ID
GROUP BY
TEMA.NOME
ORDER BY
TEMA.NOME[/code]
Espero ter ajudado,
fique com Deus!
muito obrigado, foi de grande ajuda, só uma duvida, digamos q na minha tabela eu tenha uma coluna de cidade e outra de estado, nao daria pra eu fazer o count numa mesma consulta né? eu teria q fazer um select pra cada coluna e agrupar de acordo com os dados repetidos de cada coluna pra obter os valores e montar o filtro, correto?
Não. Segue o mesmo esquema ali em cima. Com a cláusula groupby, você agrupa o que é igual na consulta para trazer resultados de operações sum(), min(), max(), avg()…
Neste caso de cidades e estados, ficaria igual ao exemplo acima.[code]SELECT
ESTADO.NOME ESTADO, COUNT(CIDADE.ID) NUMERODECIDADES
FROM
CIDADE
INNER JOIN ESTADO ON CIDADE.ESTADO = ESTADO.ID
GROUP BY
ESTADO.NOME
ORDER BY
ESTADO.NOME[/code]
então mas nao é bem este os caso, o q eu quis dizer é que eu preciso trazer o count de cidades e de estados, um nao depende do outro, pq no meu site tera uma area de filtro listando os bairros e outra area de filtros listando as cidades, por exemplo, o cara faz a busca pelo nome de um bairro, digamos que existam varios bairros com nome parecido e esses bairros podem estar em varias cidades, eu exibiria algo assim (bairros: bairro1(2), bairro2(10)… ) e abaixo disso eu exibiria (cidades: cidade1(5), cidade2(19)…).
A ideia que citei da pra resolver fazendo dois selects deste que vc me ensinou para cada situação, um pra bairro e outro pra cidade, minha duvida é se daria pra resolver isso usando um select só.
[quote=renatomattos2912]então mas nao é bem este os caso, o q eu quis dizer é que eu preciso trazer o count de cidades e de estados, um nao depende do outro, pq no meu site tera uma area de filtro listando os bairros e outra area de filtros listando as cidades, por exemplo, o cara faz a busca pelo nome de um bairro, digamos que existam varios bairros com nome parecido e esses bairros podem estar em varias cidades, eu exibiria algo assim (bairros: bairro1(2), bairro2(10)… ) e abaixo disso eu exibiria (cidades: cidade1(5), cidade2(19)…).
A ideia que citei da pra resolver fazendo dois selects deste que vc me ensinou para cada situação, um pra bairro e outro pra cidade, minha duvida é se daria pra resolver isso usando um select só.[/quote]
Entendi agora sua dúvida. Você poderia fazer uso de subconsultas, que tal?
Algo como:[code]SELECT
BAIRRO.NOME BAIRRO, X.NUMERODEESTADOS, COUNT(X.CIDADE) NUMERODECIDADES
FROM
BAIRRO
INNER JOIN CIDADE ON BAIRRO.CIDADE = CIDADE.ID
INNER JOIN ESTADO ON CIDADE.ESTADO = ESTADO.ID
INNER JOIN (
SELECT
CIDADE.ID CIDADEID, CIDADE.NOME CIDADE, ESTADO.ID ESTADOID, COUNT(ESTADO.ID) NUMERODEESTADOS
FROM
ESTADO
GROUP BY
CIDADE.ID, CIDADE.NOME, ESTADO.ID
) X ON ESTADO.ID = X.ESTADOID
GROUP BY
BAIRRO.NOME, X.NUMERODEESTADOS[/code]
Uma consulta se torna uma tabela temporária, onde você liga com as tabelas físicas. Fiz no olho só, não sei se tá correto, mas o caminho poderia ser esse.
Que tal?
isso, muito obrigado, vou dar uma testada, vlw pela ajuda.