Задавайте вопросы, мы ответим
Вы не зашли.
Задача запроса в том, чтобы выбрать минимальное значение столбца sell (float), но с условием что значение > 0 и для определенного товара (ttid)
Вот что я пытался писать, но выдает белеберду
SELECT MIN( sell ) AS SELL FROM items WHERE ttid =7099 AND sell>0
SELECT MIN( sell ) AS SELL FROM (SELECT sell FROM items WHERE ttid =7099 AND sell>0) AS tmtable
Неактивен
Нужно минимальный среди положительных? Или не включать значение в выборку если MIN(sell) <= 0?
Неактивен
В таблице не бывает отрицательных значений, но на всякий случай в принципе можно и доп. проверку дописать на отрицательные
Неактивен
lexxkn написал:
но выдает белеберду
А конкретней?
Неактивен
coin написал:
SELECT MIN( sell ) AS SELL FROM items WHERE ttid =7099 AND sell>0
Этот запрос должен выбирать минимальное значение, среди положительных sell у товара ttid =7099;
или NULL, если таких записей нет.lexxkn написал:
но выдает белеберду
А конкретней?
Для данного примера (ttid =7099) в таблице порядка 120 значений. Из них больше половины значений поля sell = 0, остальные от 1 до 50.
На выходе этого запроса я получаю 0,100000128
У меня такое ощущение что он считает среднее значение, а не минимальное
Если из запроса убрать AND sell>0, то тогда нормально выводит значение 0
Отредактированно lexxkn (28.02.2009 20:11:17)
Неактивен
Значения float хранятся в приближённом виде и, вероятно, часть нулей на самом деле не нули, а числа приближённые к нулю. Попробуйте так:
Отредактированно coin (28.02.2009 20:26:14)
Неактивен
После выполнения запроса
SELECT MIN( sell ) AS SELL FROM items WHERE ttid =7099 AND sell>0.15
Выдает значение 0,5
Проверил все значения, есть только 2 со значениями 0,1
Специально даже сделал запрос
SELECT * FROM `items` WHERE `sell`= 0,100000128
Который вернул 0 строк.
Может мне проще частично выгрузить базу и выложить для скачивания, чтобы Вам было на чем проверить
А я пока временно сделаю выбор наименьшего на пхп, чтобы сервис хоть как-то протестить на наличие ошибок.
Неактивен
Поставьте порог немного ниже
SELECT MIN( sell ) AS SELL FROM items WHERE ttid =7099 AND sell>0.00001
Второй запрос возвращает строки с заданным фиксированным значением, неудивительно, что вернул пустой результат
Неактивен
После убийства всех значений <1 запрос сработал нормально.
Все-таки он воспринимал значение 0,1 как 0,100000128. Хотя при записи в таблицу указывается именно 0,1
Буду обрезать значение на выходе тогда
Неактивен
Если нужна точность, используйте тип DECIMAL.
Неактивен
coin написал:
Если нужна точность, используйте тип DECIMAL.
Уже делаю. Оставлю 3 знака после точки
Всем спасибо за помощь
Неактивен
Привет, помогите с запросом: пытаюсь просто вставить несколько полей:
Неактивен
хуху! нашел! надо вместо ` использовать '
Неактивен