scusa eh, ma allora che c'entrano i prodotti nella join?

la tabella delle categorie com'è strutturata?

codice:
categoria

id - nome - parent_id
?

cioè: come hai impostato per avere una "categoria padre" e tante "categorie figlio" (sub categorie) nel database?