Dazu benötigen Sie einen Outer Join. Übrigens ist die Art und Weise, wie Sie Ihre Abfrage mit einem impliziten Join schreiben, veraltet und wird nicht mehr empfohlen. Es wird empfohlen, das Schlüsselwort JOIN zu verwenden. Dies macht es auch einfacher, einen inneren Join in einen äußeren Join umzuwandeln.
FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid=sc.id
Um 0 statt NULL zurückzugeben, verwenden Sie IFNULL(..., 0)
. Die gesamte Abfrage wird zu:
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
Sie sollten auch überlegen, ob es besser wäre, den Standard NULL statt 0 für Kategorien zurückzugeben, die keine Produkte haben.