Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Вычисление одного параметра через другой  (Прочитано 16188 раз)
0 Пользователей и 5 Гостей смотрят эту тему.
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« : 21-08-2007 17:28 » 

Поискал в мануале, на форуме- не наткнулся на подобное.

Если вызвать запрос

Код:
 update test set maxhp=stam*6 where id=2 ; 

то соответственно значение maxhp станет равно значению этой формулы. А можно как-то по умолчанию задать эту формулу, чтоб при изменении параметра stam автоматически изменялся параметр maxhp. ?
Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 21-08-2007 17:38 » 

a=b*6. Будет ли меняться a если изменится b? Думаю - да, причем в значительных пределах. Наверное всетаки вопрос был о другом? Да и stam вероятнее всего не переменная, а хранимая процедура stam(x).
« Последнее редактирование: 21-08-2007 17:42 от Oldy » Записан

С уважением, Oldy.
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 21-08-2007 17:42 » 

a=b*6 будет ли меняться a если изменится b? Думаю - да, причем в значительных пределах. Наверное всетаки вопрос был о другом?

Вопрос в том как задать для основного поля формулу чтоб изменяя второстепенное автоматически изменялось основное.
Записан
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 21-08-2007 17:43 » 

Вычисляемое поле.
« Последнее редактирование: 21-08-2007 17:46 от Oldy » Записан

С уважением, Oldy.
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 21-08-2007 18:01 » 

Пример можно? Мануал не откликается на Вычисляемое поле а поиск чтото несоуразное с Delphi выдаёт.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 21-08-2007 18:20 » 

т.е. желание такое, что если где-то, кто-то изменил stam то все поля зависящие от stam поменялись?

Последствия представляешь?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 21-08-2007 18:22 » 

У меня в таблице есть 2 столбца,- maxhp и stam . Хочу чтобы один выражался через другой. какие здесь могут быть последствия?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 21-08-2007 18:32 » 

не совсем понятно зачем?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 21-08-2007 18:33 » 

select stam*6 maxp, stam from test
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 21-08-2007 18:41 » 

У меня есть таблица. В таблице есть 2 колонки : stam и maxhp.

Если stam=10 , то maxhp должно быть равно соответственно 60. Однако производятся вычисления только после выполнения запроса

update test set maxhp=stam*6 where id=2 ;

Вопрос. Как мне задать формулу чтобы автоматически при изменении значения столбца stam изменялось значение столбца maxhp.

Чтоб когда я ввёл запрос :

update test set stam=32 where id=2;  автоматически maxhp стало равно 192.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #10 : 21-08-2007 19:08 » 

В MySQL скорее всего нет тригеров. Я точно сказать не могу. Надо доку читать. Но в принципе такое можно сделать с помошью триггеров.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 21-08-2007 19:12 » 

Не думал что всё будет так сложно :\
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 21-08-2007 19:28 » 

Тригеры есть в MySQL 5.1.

Про вычисляемые поля в MySQL я не слыхивал. Может я чего упустил?
Помимо community version существует коммерческая версия - enterprise - в ней может быть что-то подобное.

FallenSoul, не выдумывай сложности!
Если тебе нужно обновить поле, то используй update.
Если нужно обновить набор строк по единой формуле - используй update.
Если нужно обновить набор строк по сложной формуле, которую нельзя написать в SQL-выражении, то выбери строки, обработай и запиши обратно. Если нужен контроль целостности - используй блокировку таблиц.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
FallenSoul
Опытный

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 21-08-2007 19:30 » 

Да, ты прав. Наверное самое рациональное будет в запросе на увеличение параметра stam приписывать maxhp=stam*6; Спс
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #14 : 22-08-2007 03:48 » new

Если у столбцов линейная зависимость, то и нет смысла делать второй столбец - при выборке можно сделать вычисление. Ест., если все просто и не долго.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines