Como recomendación, no anides las tablas en el where. Haz uso de las sentencias join para unir las tablas. De esta forma, el requerimiento que tienes podría ser solucionado con el uso de left join o inner join.
Código sql:
Ver originalSELECT m.municipio,
(CASE pm.cod_prod WHEN 1 THEN cantidad_prod_mpio ELSE 0 END) AS Aceite,
(CASE pm.cod_prod WHEN 2 THEN cantidad_prod_mpio ELSE 0 END) AS Arroz,
(CASE pm.cod_prod WHEN 3 THEN cantidad_prod_mpio ELSE 0 END) AS Az_crudo,
(CASE pm.cod_prod WHEN 4 THEN cantidad_prod_mpio ELSE 0 END) AS Gallina,
(CASE pm.cod_prod WHEN 5 THEN cantidad_prod_mpio ELSE 0 END) AS Granos,
(CASE pm.cod_prod WHEN 6 THEN cantidad_prod_mpio ELSE 0 END) AS H_trigo,
(CASE pm.cod_prod WHEN 7 THEN cantidad_prod_mpio ELSE 0 END) AS Huevos,
(CASE pm.cod_prod WHEN 8 THEN cantidad_prod_mpio ELSE 0 END) AS P_carn,
(CASE pm.cod_prod WHEN 9 THEN cantidad_prod_mpio ELSE 0 END) AS Pollo,
(CASE pm.cod_prod WHEN 10 THEN cantidad_prod_mpio ELSE 0 END) AS Salch,
(CASE pm.cod_prod WHEN 11 THEN cantidad_prod_mpio ELSE 0 END) AS Visceras
FROM productos_municipio pm
INNER JOIN municipios m
ON pm.cod_municipio=m.cod_municipio
INNER JOIN productos p
ON pm.cod_prod=p.cod_prod
GROUP BY pm.cod_municipio
Esta consulta solo te mostrará los que existan en las tablas relacionadas.
Un saludo