Aby to zrobić, potrzebujesz sprzężenia zewnętrznego. Nawiasem mówiąc, sposób pisania zapytania z niejawnym sprzężeniem jest przestarzały i nie jest już zalecany. Zalecane jest użycie słowa kluczowego JOIN. Ułatwia to również zmianę sprzężenia wewnętrznego na sprzężenie zewnętrzne.
FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid=sc.id
Aby zwrócić 0 zamiast NULL, użyj IFNULL(..., 0)
. Całe zapytanie staje się:
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
Możesz również rozważyć, czy nie byłoby lepiej zwrócić domyślną wartość NULL zamiast 0 dla kategorii, które nie zawierają produktów.