Hola 
jurena. 
Cierto es que la agrupación por nombre de material y de aplicación sobra.
Lo arrastré de pruebas. 
Mi consulta, con los añadidos de "no mostrar elementos borrados" sería así:    
Código MySQL:
Ver original- SELECT-  t_applications.APPLICATION_ID ,-  t_applications.APPLICATION_name_spanish ,-  t_materials.MATERIAL_ID ,-  t_materials.MATERIAL_name_spanish , count(- t_products_materials.PRODUCT_ID )-  TOTAL_PRODUCTS  
 
- LEFT JOIN-  t_products_applications  ON-  t_products_applications.APPLICATION_ID  =-  t_applications.APPLICATION_ID  
 
- LEFT JOIN-  t_products_materials  ON-  t_products_materials.PRODUCT_ID  =-  t_products_applications.PRODUCT_ID  AND-  t_products_materials.MATERIAL_ID  =-  t_materials.MATERIAL_ID  
 
- WHERE-  t_materials.MATERIAL_options_erased =0 AND-  t_applications.APPLICATION_options_erased =0
 
- GROUP BY-  t_applications.APPLICATION_ID ,-  t_materials.MATERIAL_ID  
 
- ORDER BY-  t_applications.APPLICATION_name_spanish  ASC,-  t_materials.MATERIAL_name_spanish  ASC
 
Mi consulta genera 252 resultados  
La tuya, tal cual, genera 504, pero metiéndole las cláusulas de elementos borrados, se queda en 252  
Los resultados, comparados uno con otros son exactamente los mismos (lo he mirado bien a fondo)  
Me quedo con mi primera opción, por evitar el tema de "subconsultas"  
Gracias de nuevo