как определить, сколько раз емкость достигает максимальной

пример
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. Мне нужно посоветовать, какой самый эффективный способ достижения вышеуказанной цели.

Благодарю.

0

Решение

Вы можете использовать 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;

Пример SQLFiddle

1

Другие решения

Других решений пока нет …