Le self join non sono altro che delle inner join di una tabella con sé stessa, quindi quella query che hai postato, in forma esplicita diventa:

codice:
SELECT 
	parent.category_id, parent.name, COUNT( product.name ) AS num_prod
FROM 
	nested_category AS node
INNER JOIN 
	nested_category AS parent
	ON node.lft BETWEEN parent.lft AND parent.rgt
LEFT JOIN /*INNER JOIN*/
	product
	ON node.category_id = product.category_id
GROUP BY 
	parent.name
ORDER BY 
	parent.category_id
dove ho impostato il left join con la tabella product.