Hombre, una cosa fácil es obtener las ids y el número de bodegas que tienen stock 0:
Código PHP:
SELECT idproducto,COUNT(*) FROM almacen WHERE stock = '0' GROUP BY idproducto ORDER BY COUNT(*)
Como no sé si te valdrá seguiré pensando sobre lo otro
EDITO:
Hay una cuestión muy importante, ¿todos los productos aparecen con todas las bodegas o hay algún producto que no aparezca las 8 veces?
Si todos aparecen con las 8 bodegas ya sé como solucionarlo:
Código PHP:
SELECT DISTINCT idproducto FROM almacén WHERE idproducto NOT IN (SELECT DISTINCT idproducto FROM almacén WHERE stock <> '0')
No sé porque me había empeñado en hacerlo de otra manera y así era mucho más fácil!