пример
MySQL таблица с именем «Профиль» данные, как показано ниже
----------------------
user_id | max_capacity
----------------------
100 3
101 5
103 10
другая таблица mysql с именем «Активные» данные, как показано ниже
-------------------------
user_id | active_capacity
-------------------------
101 7
103 5
обратите внимание на таблицу «Активный» столбец — active_capacity
является динамическим, его значения меняются каждую секунду другим скриптом.
Я хочу определить, если мой user_id #101
имеет хиты / над active_capacity
его разрешено max_capacity
который 5
в таблице «Профиль». Обратите внимание, что в таблице «Активный» показано, что user_id #101
его active_capacity
является 7
сейчас.
Я хотел бы определить максимальное значение удара, как $hit=2
если мой user_id #101
хиты / над его max_capacity
Впервые я хочу сохранить его значение в другой таблице под названием «Опасность»
хранение user_id #101
потому что его active_capacity теперь 7, что за его max_capacity
MySQL таблица «Опасность» данные, как показано ниже
--------------
user_id | hits
--------------
101 1
через 5 минут user_id #101
его active_capacity
в MySQL таблица «Активный» уменьшится до 4
еще через 5 минут user_id #101
его active_capacity
в MySQL таблица «Актив» увеличить до 10
поэтому здесь я хочу обновить таблицу «Опасность» user_id #101
колонка hits
до «2»
пожалуйста, обратите внимание: я хочу обновить столбец таблицы «опасность» hits
значение только после active_capacity
от «Активного стола» уменьшится вниз и снова его active_capacity
значение увеличивается и достигает / превышает его max_capacity
значение из таблицы «Профиль»
этот скрипт будет работать с заданиями cron. Мне нужно посоветовать, какой самый эффективный способ достижения вышеуказанной цели.
Благодарю.
Вы можете использовать MySQL on duplicate key update
функциональность, чтобы сделать это как одно утверждение. Это предполагает, что user_id является первичным ключом в таблице Danger. SQL также предполагает, что user_id уникален для двух других таблиц:
insert into Danger (
user_id, hits
) select
p.user_id, 1
from
Profile p
inner join
Active a
on a.user_id = p.user_id
where
a.active_capaciy > p.max_capacity
on duplicate key update set
hits = hits + 1;
Других решений пока нет …