При выборке из таблицы по полю price(decimal(8,2)) значение береться не корректно. А именно по сотым выводиться не правильно..
Как можно обойти этот нюанс?
Slava Rozhnev, Нужно было определить минимальную цену на каждый товар и поставщика(-ов). Решил вопрос через временную таблицу.
CREATE TEMPORARY TABLE `tmp_min_price`
SELECT p.product_id,MIN(p.price) m_price
FROM products p
WHERE p.price IS NOT NULL
GROUP BY p.product_id ;
UPDATE `products` p
LEFT JOIN `tmp_min_price` mp ON mp.product_id = p.product_id AND mp.m_price = p.price
SET p.is_min_price = 1 WHERE mp.product_id IS NOT NULL
Никакого округления у вас там нет. В вашем запросе выбирается минимальное значение price и первые попавшиеся по остальным полям. Вам нужен запрос типа такого:
SELECT p.id, p.price, p.code FROM products p
JOIN
( SELECT product_id, MIN(price) minPrice
FROM products WHERE price IS NOT NULL GROUP BY product_id
) p2
ON p.price = p2.minPrice AND p.product_id = p2.product_id;