Per fare ciò è necessario un join esterno. A proposito, il modo in cui stai scrivendo la tua query con un join implicito è obsoleto e non è più consigliato. Si consiglia di utilizzare la parola chiave JOIN. In questo modo è anche più facile cambiare un join interno in un join esterno.
FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid=sc.id
Per restituire 0 invece di NULL, usa IFNULL(..., 0)
. L'intera query diventa:
SELECT
sc.*,
IFNULL(MIN(s.price), 0) AS minp,
IFNULL(MAX(s.price), 0) AS maxp
FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid = sc.id
GROUP BY sc.id
Potresti anche considerare se sarebbe meglio restituire il valore predefinito NULL invece di 0 per le categorie che non hanno prodotti.