SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 28.01.2013 16:58:18

Mauop
Участник
Зарегистрирован: 10.08.2012
Сообщений: 11

Умножение столбца на разные значение КАК ?

Есть поле price, нужно в зависимости от его значений умножать на разные числа
Например:
Если значение меньше 100 то price*2, если от 100 до 1000 то price*1.75

Как это сделать с помощью SQL запроса не догоняю...

Неактивен

 

#2 28.01.2013 17:02:52

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Умножение столбца на разные значение КАК ?

select if(price<100,price*2,if(price between 100 and 1000,price*1.75,'значение для остальных случаев')) from ...

Неактивен

 

#3 28.01.2013 17:52:08

Mauop
Участник
Зарегистрирован: 10.08.2012
Сообщений: 11

Re: Умножение столбца на разные значение КАК ?

Vasya, спасибо за ответ!
Я извиняюсь, наверное не правильно поставил вопрос...
Вот что у меня получается

SELECT IF (price<100,price*2,
IF(price BETWEEN 100 and 1000,price*1,5,
IF (price BETWEEN 1000 and 10000,price*1,4,
IF (price BETWEEN 10000 and 30000,price*1,37,
IF (price BETWEEN 30000 and 50000,price*1,33,
IF (price BETWEEN 50000 and 70000,price*1,3,
IF (price BETWEEN 70000 and 100000,price*1,2,
IF (price > 100000,price*1,1)))))))) FROM "price";

[Err] ERROR:  function if(boolean, double precision, integer) does not exist
LINE 8: IF (price > 100000,price*1,1)))))))))...

Отредактированно Mauop (28.01.2013 17:53:39)

Неактивен

 

#4 28.01.2013 18:05:30

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Умножение столбца на разные значение КАК ?

десятичные через точку 1.5 вместо 1,5

Неактивен

 

#5 28.01.2013 18:08:37

Mauop
Участник
Зарегистрирован: 10.08.2012
Сообщений: 11

Re: Умножение столбца на разные значение КАК ?

Да это я уже поправил... Ошибка та же...
[Err] ERROR:  function if(boolean, double precision) does not exist
LINE 8: IF (price > 100000,ptrice*1.1)))))))))...
         ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

Отредактированно Mauop (28.01.2013 18:09:32)

Неактивен

 

#6 28.01.2013 18:08:44

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Умножение столбца на разные значение КАК ?

Кроме того пробел после if не нужен и двойные кавычки у имени таблицы уберите.

Неактивен

 

#7 28.01.2013 18:10:01

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Умножение столбца на разные значение КАК ?

функция if имеет три аргумента, а в последней строке у вас их всего лишь 2

Неактивен

 

#8 28.01.2013 18:44:59

Mauop
Участник
Зарегистрирован: 10.08.2012
Сообщений: 11

Re: Умножение столбца на разные значение КАК ?

Vasya написал:

функция if имеет три аргумента, а в последней строке у вас их всего лишь 2

а каким должен быть 3 аргумент ?
Если я делаю так:

(price>100000,price*1.1,price*1)

то ошибка из

[Err] ERROR:  function if(boolean, double precision) does not exist

меняется на

[Err] ERROR:  function if(boolean, double precision, double precision) does not exist

Отредактированно Mauop (28.01.2013 18:45:26)

Неактивен

 

#9 28.01.2013 19:06:13

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Умножение столбца на разные значение КАК ?

А вы в mysql этот запрос выполняете? Кто пишетэту ошибку?

Неактивен

 

#10 28.01.2013 19:16:17

Mauop
Участник
Зарегистрирован: 10.08.2012
Сообщений: 11

Re: Умножение столбца на разные значение КАК ?

База postgresql, я думал что sql не отличается... Получается что отличается ?
А вы случайно для postgresql не знаете решение ?

Неактивен

 

#11 28.01.2013 19:18:13

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Умножение столбца на разные значение КАК ?

У каждой базы свои расширения стандарта sql.
Нет, не знаю.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson