Hiervoor heb je een outer join nodig. Trouwens, de manier waarop je je vraag schrijft met een impliciete join is verouderd en wordt niet langer aanbevolen. Het gebruik van het JOIN-sleutelwoord wordt aanbevolen. Dit maakt het ook makkelijker om een inner join te veranderen in een outer join.
FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid=sc.id
Om 0 te retourneren in plaats van NULL, gebruikt u IFNULL(..., 0)
. De hele zoekopdracht wordt:
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
U kunt ook overwegen of het beter is om de standaard NULL terug te geven in plaats van 0 voor categorieën die geen producten hebben.