Dúvida com count quando valor é 0

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.

Vc precisa usar um decode.

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;

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

muito obrigado, vlw msm.

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

[quote=xploitx]Perfeito Bob_sponja. Olhá só o resultado q deu, exatamente o q eu queria.

muito obrigado, vlw msm.[/quote]

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

[quote=sergiotaborda][quote=xploitx]Perfeito Bob_sponja. Olhá só o resultado q deu, exatamente o q eu queria.

muito obrigado, vlw msm.[/quote]

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

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?!