Задача следующая вытянуть товары и их общее количество(В данном случае тех у которых color = green)
У одного товара цен может быть много или вовсе не быть, вытянуть нужно минимальную и только 1!
Сейчас в столбце cnt получается количество цен. Вот тут проблема.
SELECT DISTINCT
prd.id,
prd.name,
ROUND( MIN(prc.price), 2) AS price,
COUNT(prd.*) as cnt
FROM products prd
LEFT JOIN price prc ON prc.product_id = prd.id
WHERE prd.color = green
GROUP BY prd.id
ORDER BY price DESC
UPD:
Это все нужно для того что бы не посылать отдельный COUNT(*) запрос, а в базе товаров много.