Pour ce faire, vous avez besoin d'une jointure externe. Soit dit en passant, la façon dont vous écrivez votre requête avec une jointure implicite est obsolète et n'est plus recommandée. L'utilisation du mot-clé JOIN est recommandée. Cela facilite également la transformation d'une jointure interne en jointure externe.
FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid=sc.id
Pour renvoyer 0 au lieu de NULL, utilisez IFNULL(..., 0)
. La requête entière devient :
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
Vous pouvez également envisager s'il serait préférable de renvoyer la valeur par défaut NULL au lieu de 0 pour les catégories qui n'ont pas de produits.