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?