|
|
|
|
|
для: web777
(16.07.2009 в 02:23)
| | DECIMAL(всего_цифр, цифр_после_точки)
32.05 - DECIMAL(4, 2)
На первый вопрос отвечать не буду.
Вы мешаете в кучу инструмент SQL и логику обработки данных.
Если Вам непонятна функция COALESCE() - лучше внесите все возможные курсы в таблицу.
Хотя смысл её очень прост. Она вернет значение первого же (слева направо) определенного аргумента. | |
|
|
|
|
|
|
|
для: Trianon
(16.07.2009 в 01:56)
| | во, здорово, теперь вроде всё нормально работает, спасибо:)
по поводу COALESCE(c.coeff, 1) я так понял цифра 1 должна быть всегда или в зависимости от просматриваемой валюты подставлять соответствующий курс, ну то есть если просматриваем по доллару то в место 1 подставляем курс доллара 32.05 и если просматриваем по евро то курс евро 44.99 Или же тут всегда только 1 должна стоять?
да и какое значение указать для типа поля price decimal(0,0) сколько цифр оставить перед запятой и после? для коэффициента(coeff ) поставил так decimal(3,2) хотел decimal(2,2) но почему-то 2 заменилось автоматом на 3 | |
|
|
|
|
|
|
|
для: web777
(16.07.2009 в 01:20)
| | Костыль: поменяйте слово where на слово having
[horisontal scrolling ЛАП on] | |
|
|
|
|
|
|
|
для: Trianon
(16.07.2009 в 00:21)
| | спасибо что помогаете, самому мне сложно разобраться
я попытался сделать по последнему примеру, получилось вот что
этот запрос работает нормально
SELECT a.*,(a.price * COALESCE(c.coeff, 1) ) AS price_new FROM `auto` a LEFT JOIN `currency` c ON a.currency=c.id ORDER BY price_new asc
|
но если добавить where price_new BETWEEN 300 AND 50000
SELECT a.*,(a.price * COALESCE(c.coeff, 1) ) AS price_new FROM `auto` a LEFT JOIN `currency` c ON a.currency=c.id where price_new BETWEEN 300 AND 50000 ORDER BY price_new asc
|
выдаётся такая ошибка:
Unknown column 'price_new' in 'where clause'
может я где-то не так что-то указал? | |
|
|
|
|
|
|
|
для: web777
(15.07.2009 в 22:36)
| | >спасибо за подсказку, верно, я не обратил внимание что нужно было у коэфициента заменить запятую на точку, а какой лучше тип указать для этого поля(коэфициент)?
DECIMAL
аналогично и с полем price
>
>насчёт 16 тыс. верно, в дампе этой цифры нет, она была вычислена PHP по курсу.
Вы сказали, что выполняете фильтр с помощью WHERE BETWEEN AND
Там у Вас совсем даже не вычисляемые поля, а исходные.
Сервер отрабатывает в строгом соответствии с текстом запроса.
подсказка:
SELECT а.* , (цена * COALESCE(курс, 1) ) AS result
...
WHERE result BETWEEN ... AND ...
ORDER BY result | |
|
|
|
|
|
|
|
для: Trianon
(15.07.2009 в 22:12)
| | спасибо за подсказку, верно, я не обратил внимание что нужно было у коэфициента заменить запятую на точку, а какой лучше тип указать для этого поля(коэфициент)?
насчёт 16 тыс. верно, в дампе этой цифры нет, она была вычислена PHP по курсу. | |
|
|
|
|
|
|
|
для: web777
(15.07.2009 в 20:03)
| | 1. записи 16 тыс. евро я в дампе не нашел . поэтому подтвердить или опровергнуть утверждение не могу.
2. коэффициент курса валюты в таблице лежит в неправильно м формате и поле неправильного типа. Из-за чего от курса используется лишь его целая часть (без дробной) . Такую ошибку Вы будете искать годами, потому что проявляется она в мелочах.
3. задачу решить безусловно можно. | |
|
|
|
|
 4.1 Кб |
|
|
для: Trianon
(15.07.2009 в 18:20)
| | извиняюсь, сейчас сделал экспорт двух таблиц auto и currency и приложил файлом
но решить данную задачу както можно?
к примеру на странице
http://cars.auto.ru/cars/used/honda/accord/
можно заметить просмотр по различным валютам так же там присутствует два поля для выбора поиска по диапазону цены "Цена от" и "Цена до" | |
|
|
|
|
|
|
|
для: web777
(15.07.2009 в 17:37)
| | Это не дамп. Это некий отчет.
Дамп - это последовательность из операторов CREATE TABLE и INSERT
Снимается phpMyAdmin в разделе Экспорт
А отчет этот из поста уберите . Ленту рвет. | |
|
|
|
|
|
|
|
для: Trianon
(15.07.2009 в 17:14)
| | дамп немного урезал, убрал лишние колонки, оставил несколько | |
|
|
|
|