Problemas com COUNT
Estou estudando BD e criando bancos e tabelas para estudo, eis que me deparo com o COUNT que promete contar valores gerando na consulta o resultado, e já consegui fazer algumas consultas simples quando meu resultado só vai gerar uma linha, mas se eu precisar de resultados em mais de uma linha não róla, a consulta sempre gera uma tabela resposta de apenas uma linha.
select c.nome, count(cf.comida) from casa c join comidasfav cf on id_pessoa=quem_pref;
A consulta que estou tentando fazer é essa, tenho uma tabela de nome "casa" e uma de nome "comidasfav" onde eu relaciono o nome das pessoas da tabela casa com as comidas que elas preferem na tabela comidasfav.
Na minha cabeça o resultado deveria ser o nome dos moradores e ao lado a quantidade de comidas que tem associadas a eles, porém só aparece uma linha com o nome de um morador.
Tem algo errado na consulta?
Desde já agradeço a ajuda...
select c.nome, count(cf.comida) from casa c join comidasfav cf on id_pessoa=quem_pref;
A consulta que estou tentando fazer é essa, tenho uma tabela de nome "casa" e uma de nome "comidasfav" onde eu relaciono o nome das pessoas da tabela casa com as comidas que elas preferem na tabela comidasfav.
Na minha cabeça o resultado deveria ser o nome dos moradores e ao lado a quantidade de comidas que tem associadas a eles, porém só aparece uma linha com o nome de um morador.
Tem algo errado na consulta?
Desde já agradeço a ajuda...
Alan Santos
Curtidas 0
Respostas
Claudio Lopes
28/05/2014
Bom cara pelo que entendi, vou tentar te explicar usanto apenas uma tabela
suponto que essa tabela tem exatamente essas colunas (vide imagem) [img]http://arquivo.devmedia.com.br/forum/imagem/340939-20140529-190128.png[/img]
faria assim:
O reaultado seria
a - feijao - 3
a - arroz - 3
b - feijao - 3
b - arroz - 3
você está contando seu resultado pelas colunas nome e comida (agrupando) o mesmo acontece com o sum()
suponto que essa tabela tem exatamente essas colunas (vide imagem) [img]http://arquivo.devmedia.com.br/forum/imagem/340939-20140529-190128.png[/img]
faria assim:
SELECT NOME , COMIDA , COUNT(*) FROM SUA_TABELA GROUP BY NOME , COMIDA
O reaultado seria
a - feijao - 3
a - arroz - 3
b - feijao - 3
b - arroz - 3
você está contando seu resultado pelas colunas nome e comida (agrupando) o mesmo acontece com o sum()
GOSTEI 0
Claudio Lopes
28/05/2014
ahh eu vacilei colocando a coluna qtde, isso vai te servir para a soma, mas o count(*) apenas para exibir a quantidade de linhas de nome e comida .
GOSTEI 0
Alex Lekao
28/05/2014
ja tive alguns problemas com agrupamentos no MySQL, como desconheco a estrutura, meio que abandonei. rsrsr
mas pelo que o Din sugeriu ja deveria funcionar.
seria apenas colocar um group by na ultima linha com o nome do campo c.nome ou mais algum que tiver na relacao de campos no select.
Espero ter ajudado.
Abraco.
Alex - Lekao
mas pelo que o Din sugeriu ja deveria funcionar.
seria apenas colocar um group by na ultima linha com o nome do campo c.nome ou mais algum que tiver na relacao de campos no select.
Espero ter ajudado.
Abraco.
Alex - Lekao
GOSTEI 0