Dúvida com count quando valor é 0

6 respostas
X

Sou iniciante em SQL e estou com dificuldades em uma consulta que use COUNT.
Tenho duas tabelas,
Categoria:

E Sub_categoria

Percebe-se que a tabela sub_categoria possui uma chave estrangeira da tabela categoria, o registro id_categoria

O meu SQL irá contar quantas vezes os registros da tabela categoria aparecem na tabela sub_categoria, inclusive quando não aparecem (valor 0). Aí que está o problema, quando a tabela sub_categoria não possui referência da tabela categoria, o mesmo não é mostrado com valor 0.
Veja o meu resultado com a seguinte query:

SELECT categoria.id_categoria,
categoria.nome_categoria,
COUNT(sub_categoria.id_categoria) as num_subcategorias
FROM categoria, sub_categoria
WHERE categoria.id_categoria = sub_categoria.id_categoria
AND EXISTS (SELECT * FROM categoria)
GROUP BY categoria.id_categoria

Resultado:

Observe que a categoria Perfume não é mostrada pois a mesma não possui nenhuma referência na tabela sub_categoria. Quero que Perfume apareça com numero de sub_categoria igual a 0.

6 Respostas

A

Vc precisa usar um decode.

B

Testa isso aqui:

select categoria.id_categoria, categoria.nome_categoria, count(sub_categoria.id_categoria)

from categoria

left join sub_categoria on categoria.id_categoria = sub_categoria.id_categoria

group by categoria.id_categoria, categoria.nome_categoria;
X

Perfeito Bob_sponja. Olhá só o resultado q deu, exatamente o q eu queria.

muito obrigado, vlw msm.

B

De nada… Já passei por essa mesma situação… Precisando estamos aê…

sergiotaborda

xploitx:
Perfeito Bob_sponja. Olhá só o resultado q deu, exatamente o q eu queria.

muito obrigado, vlw msm.

A questão é se vc entendeu porquê e se saberia replicar o resultado em um outro problema semelhante…

X

sergiotaborda:
xploitx:
Perfeito Bob_sponja. Olhá só o resultado q deu, exatamente o q eu queria.

muito obrigado, vlw msm.

A questão é se vc entendeu porquê e se saberia replicar o resultado em um outro problema semelhante…

Saberia aplicar com certeza, agora eu na verdade não sei pq o left join faz com q o count conte 0
, não deveria ser null?!

Criado 13 de fevereiro de 2013
Ultima resposta 16 de fev. de 2013
Respostas 6
Participantes 4