Ho questa tabella:

codice:
*Categoria
id_cat | id_parent |name
id_cat è la chiave primaria, id_parent una FK verso la tabella Categoria stessa.

Con questa struttura rappresento una gerarchia di categorie dove ognuna di esse ha un link alla categoria padre; solo le categorie di livello piu alto hanno id_parent = id_cat.

Ora devo fare una query che mi restituisca, per ogni categoria, il numero di sottocategorie contenute.

Esempio:

Ho questa tabella:

codice:
*Categoria
id_cat | id_parent |name
0          0             Root
1          0             Saponi
2          1             Shampoo
3          1             Saponedimarsiglia
4          0             Animale
5          4             Pecora
6          4             Capra
Da queste entry vorrei che fosse prodotto un risultato di questo tipo:

codice:
cat | sottocategorie
0      2
1      2
2      0
3      0
4      2
5      0
6      0
Mi sembra una cosa molto banale ma forse ho bevuto troppa birra ultimamente e mi sono incaprettato su questa query:

codice:
SELECT *,id as cid,
           (SELECT COUNT(*) FROM categoria WHERE categoria.id=cid AND id!=parent) as subcat   
FROM categoria
Cosa non va?