| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление SQL-запросов > интересное увеличение числа одним SQL запросом |
| Автор: Cheizer 20.9.2011, 10:38 | ||
Подскажите пожалуйста, как грамотно SQL запрос написать, что бы увеличить на 7% все цены на сайте, есть поле "price" в базе, делаю так:
пока безрезультатно :(, цены только уменьшаются.... |
| Автор: Akina 20.9.2011, 10:45 | ||
Ну нельзя апдейтить таблицу выбираемыми из неё значениями! сделай вьюшку, которая выберет ID и PRICE, и апдейти по ней...
|
| Автор: Cheizer 20.9.2011, 10:48 | ||||
а что такое вьюшка? Добавлено через 5 минут и 23 секунды я так сделал, UPDATE product SET `price` = round(price * 1.07) почему нельзя таким методом напрямую? Цены вроде поднялись на 7% |
| Автор: AndreyIQ 20.9.2011, 10:58 | ||
Можно, все так и делают |
| Автор: Cheizer 20.9.2011, 11:22 |
| Всем спасибо, Akina спасибо за интересный вариант |
| Автор: Akina 20.9.2011, 12:55 |
Метод прямого обновления содержит в себе потенцию неоднозначности и зацикливания. Представьте, что на обновляемое поле повешен триггер, способный при некоторых условиях менять обновляемое значение... можете придумать другие варианты... В то же время метод с использованием промежуточной вьюшки относительно безопасен. |
| Автор: Zloxa 20.9.2011, 13:10 | ||
Если только тут не некая вычурная особенность маси.... Мне кажется ты путаешься и путаешь других. Неоднозначность появляется при чтении из row триггера, в момент записи. Рекурсивное зацикливаниие же - при записи в таблицу из триггера на нее. В предложении же set апдейта столько же неоднозначности и рекурсии, сколько и в обычном присваивании. То бишь - ноль. И, в общем то, не зачем тут городить всякие не нужные селфджойны и подзапросы. |