La relacion entre Productos y Categorias te esta molestando mas que ayudando.
Código MySQL:
Ver original (subcategorias-productos sp
ON sp.id_subcategoria
=s.id
)
Como puedes ver, a tabla categorias-productos no es necesaria ni en la query ni en la estructura, excepto que haya productos que pertenezcan directamente a una categoria sin pertenecer a una subcategoria.
Si ese es le caso yo antes de hacer una consulta mas complicada, lo solucionaria agregando una subcategoria "Genérica" para cada categoria y asignaria esos productos a esas nuevas subcategorias. Demanera que siempre se cumpla la relación
Producto > Subcategoria > Categoria