У меня есть запрос:число с плавающей точкой и подзапрос
SELECT
DISTINCT `g`.`id` ,
`g`.`steam_id` ,
`g`.`type` ,
`g`.`title` ,
`g`.`price` ,
`g`.`metascore` ,
`g`.`image` ,
(
SELECT `id`
FROM `game_promotions`
WHERE `game_promotions`.`game_id` = `g`.`id`
) AS `promotion_id`,
(
SELECT `price`
FROM `game_promotions`
WHERE `game_promotions`.`game_id` = `g`.`id`
) AS `promotion_price`,
(
SELECT COUNT(`id`)
FROM `bot_games`
WHERE `game_id` = `g`.`id`
AND `buyer` IS NULL
) AS `copies`
FROM
`games` AS `g` ,
`game_genres` AS `gg`
WHERE
`gg`.`game_id` = `g`.`id`
AND `g`.`title` LIKE "Counter%"
GROUP BY `promotion_id`
LIMIT 0 , 30
И проблема это плохо возвращается promotion_price
. В таблице game_promotions
, price
- «24.99», но в результате запроса promotion_price
- «14.9899997711182». Возвращенный идентификатор продвижения - это хорошо. Только плавающая цена недействительна. Почему это число изменилось?
, вероятно, потому, что 14,99 нельзя точно представить в плавающей запятой. НЕ МОЖЕТ БЫТЬ. например «Мы с плавающей точкой борга, подготовимся к приближению». –
Как определяется столбец цены? INT или FLOAT или что? –
Ценовая колонка определена FLOAT – Zalazdi