![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
снизить цену на определенный %
Camaro © (2013-02-08 12:15:00)нужно написать SQL-запрос, который бы снижал текущую цену товара на определенный процент, задаваемый пользователем. Цена не может быть отрицательной, нужно учесть следующее: если в при снижении цены получается значение < 0, то цена должна стать 0. У меня получилось реализовать это 2-мя запросами:
UPDATE item SET price = price * (1 - :koeff / 100) WHERE id IN %s AND price * (1 - :koeff / 100) >= 0;
UPDATE item SET price = 0 WHERE id IN %s AND price * (1 - :koeff / 100) < 0;
Может можно сделать все как-то иначе, одним запросом?
turbouser (2013-02-08 14:38:00) [1]
UPDATE item
SET price = CASE
WHEN price * (1 - :koeff / 100) > 0 THEN price * (1 - :koeff / 100)
ELSE 0
END
WHERE id IN %s
странные отрицательные цены..
Плохиш (2013-02-08 14:24:00) [2]
> UPDATE item SET price = price * (1 - :koeff / 100) WHERE
> id IN %s AND price * (1 - :koeff / 100) >= 0;
Вот это нафига?
> UPDATE item SET price = 0 WHERE id IN %s AND price * (1 - :koeff / 100) < 0;
А здесь надо просто отрицательные цены в 0 установить.
PS.
1. Оба запроса выполнить в одной транзакции.
2. Прочитать документацию к используемому серверу бд и сделать одним запросом.
Inovet (2013-02-08 14:04:00) [3]> [3] Ega23 © (08.02.13 13:51)
> Как такое возможно при неотрицательной цене?
Ну, проценты такие. Например, снизить цену на 150%.:) Правда противоречит первому словию, ну ничего.
Ega23 (2013-02-08 13:51:00) [4]
> Цена не может быть отрицательной, нужно учесть следующее:
> если в при снижении цены получается значение < 0, то цена
> должна стать 0.
Как такое возможно при неотрицательной цене?
Inovet (2013-02-08 13:43:00) [5]> [0] Camaro (08.02.13 12:15)
> 1 - :koeff / 100
Вот это почему бы сразу не вычислить и передать параметром.
> [0] Camaro (08.02.13 12:15)
> WHERE id IN %s AND price * (1 - :koeff / 100) >= 0
Странный процент, однако. Он отрицательный может быть. Ну а вообще вот здесь
> [0] Camaro (08.02.13 12:15)
> SET price =
и разрули это. Будет одним запросом. Но всё равно, что-то здесь не так.
Palladin (2013-02-08 12:23:00) [6]При чем тут делфи?