Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> интересное увеличение числа одним SQL запросом, есть поле в базе "price", задача проста  
:(
    Опции темы
Cheizer
Дата 20.9.2011, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 28.1.2011

Репутация: нет
Всего: нет



Подскажите пожалуйста, как грамотно SQL запрос написать, что бы увеличить на 7% все цены на сайте, есть поле "price" в базе, делаю так:

Код

UPDATE product SET `price` = round(price * 1.15)
UPDATE product SET `price` = price * 1.1 


пока безрезультатно :(, цены только уменьшаются....
PM MAIL   Вверх
Akina
Дата 20.9.2011, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Ну нельзя апдейтить таблицу выбираемыми из неё значениями! сделай вьюшку, которая выберет ID и PRICE, и апдейти по ней...

Код

create view id_price
as
select id, price
from product;

update product, id_price
set product.price=round(1.07*id_price.price, 2)
where product.id=id_price.id;



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Cheizer
Дата 20.9.2011, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 28.1.2011

Репутация: нет
Всего: нет



Цитата(Akina @ 20.9.2011,  10:45)
Ну нельзя апдейтить таблицу выбираемыми из неё значениями! сделай вьюшку, которая выберет ID и PRICE, и апдейти по ней...

Код

create view id_price
as
select id, price
from product;

update product, id_price
set product.price=round(1.07*id_price.price, 2)
where product.id=id_price.id;

а что такое вьюшка? smile И почему нельзя апдейдить так напрямую?

Добавлено через 5 минут и 23 секунды
я так сделал, UPDATE product SET `price` = round(price * 1.07)

почему нельзя таким методом напрямую? Цены вроде поднялись на 7% smile
PM MAIL   Вверх
AndreyIQ
Дата 20.9.2011, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 5.2.2007

Репутация: 3
Всего: 8



Цитата(Cheizer @ 20.9.2011,  10:48)
я так сделал, UPDATE product SET `price` = round(price * 1.07)

почему нельзя таким методом напрямую? Цены вроде поднялись на 7% smile

Можно, все так и делают
PM MAIL   Вверх
Zloxa
Дата 20.9.2011, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Akina @  20.9.2011,  10:45 Найти цитируемый пост)
Ну нельзя апдейтить таблицу выбираемыми из неё значениями! сделай вьюшку, которая выберет ID и PRICE, и апдейти по ней...

НЕУЖЕЛИ В МАСЕ ВСЕ ДЕЙСТВИТЕЛЬНО ТАК ПЛОХО?  smile 


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Cheizer
  Дата 20.9.2011, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 28.1.2011

Репутация: нет
Всего: нет



Всем спасибо, Akina спасибо за интересный вариант smile.
PM MAIL   Вверх
Akina
Дата 20.9.2011, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(AndreyIQ @  20.9.2011,  11:58 Найти цитируемый пост)
Можно, все так и делают 

Цитата(Zloxa @  20.9.2011,  12:00 Найти цитируемый пост)
НЕУЖЕЛИ В МАСЕ ВСЕ ДЕЙСТВИТЕЛЬНО ТАК ПЛОХО?

Метод прямого обновления содержит в себе потенцию неоднозначности и зацикливания. Представьте, что на обновляемое поле повешен триггер, способный при некоторых условиях менять обновляемое значение... можете придумать другие варианты...
В то же время метод с использованием промежуточной вьюшки относительно безопасен.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 20.9.2011, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Akina @  20.9.2011,  12:55 Найти цитируемый пост)
Метод прямого обновления содержит в себе потенцию неоднозначности и зацикливания.

Если только тут не некая вычурная особенность маси.... Мне кажется ты путаешься и путаешь других. Неоднозначность появляется при чтении из row триггера, в момент записи. Рекурсивное зацикливаниие же - при записи в таблицу из триггера на нее. В предложении же set апдейта столько же неоднозначности и рекурсии, сколько и в обычном присваивании. То бишь - ноль. И, в общем то, не зачем тут городить всякие не нужные селфджойны и подзапросы.



Это сообщение отредактировал(а) Zloxa - 20.9.2011, 13:13


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1066 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.