Ir para conteúdo
Fórum Script Brasil
  • 0

Com fazer a função count retornar o zero?


labanca

Pergunta

To com seguinte problema:

Tenho que fazer uma consulta usando count. E preciso que os zeros sejam exibidos no resultado da query. Tipo agrupo por codigos e vejo sempre que aquele codigo aparece se, no mesmo registro dele, outro valor (por exemplo: "sim") aparece também.

por exemplo:

cod resposta

123 sim

123 sim

123 não

123 não

321 não

321 sim

456 não

456 não

456 não

Cod count

123 2

321 1

456 0 <= isso não acontece =(

Mas o count não retorna os zeros!!!

Não preciso de nada pra PHP ou qualquer outra coisa, é no mysql mesmo. Já procurei muito e não achei nada ainda na internet

Se alguém puder me ajudar fico MUITO grato.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
Tipo agrupo por codigos e vejo sempre que aquele codigo aparece se, no mesmo registro dele, outro valor (por exemplo: "sim") aparece também.

por exemplo:

cod resposta

123 sim

123 sim

123 não

123 não

321 não

321 sim

456 não

456 não

456 não

Cod count

123 2

321 1

456 0 <= isso não acontece =(

Mas o count não retorna os zeros!!!

labanca, você não postou sua instrução SQL, o ideal seria tê-la colocado.

Mas, pelo seu exemplo, e resultado apresentado, parece que você faz algo como:

SELECT Cod, COUNT(Resposta)
FROM <nome_tabela>
WHERE Resposta = 'sim'
Se for isto mesmo, não tem como mostrar na resposta os códigos que, por acaso, não tenham a resposta "sim" com o valor zero. Para conseguir algo assim, você poderia partir da idéia de que você busca apenas um item de cada código da sua tabela. Seria algo assim:
select distinct cod
FROM <nome_tabela>
isto, faz com que você tenha uma lista distinta (distinct - apenas uma ocorrência) de todos os códigos existentes na sua tabela. Com isto em mente, você pode, agora, imaginar que para cada código deste resultado, você busca a quantidade de uma determinada resposta para ele. Neste caso, a resposta poderá ser 0 (zero) ou uma determinada quantidade. A consulta ficaria mais ou menos assim:
select distinct cod, (SELECT count(Resposta)
                      FROM <nome_tabela> T2
                      where T1.cod = T2.cod and Resposta = 'sim') qtd
FROM <nome_tabela> T1

Observe que "criamos" uma segunda coluna (qtd) em que seu valor é obtido do resultado de uma outra consulta (sub-consulta). Esta consulta traz especificamente a quantidade (count) de respostas 'sim' para o código na consulta principal sendo "processado" - isto é viabilizado pelo relacionamento estabelecido entre os campos Cod nas duas tabelas (a tabela é fisicamente uma só, apenas utilizamos ela duas vezes e usamos um alias - necessário - para diferenciá-la: T1 e T2).

Resumindo: para cada cod na consulta principal, contamos a quantidade de sim na consulta secundária.

Veja se isto lhe ajuda.

Abraços

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...