У меня есть две таблицы в базе данных Oracle: USERS
и USERLOG
SQL, чтобы обновить таблицу Oracle, основанную на другой таблице
USERS
содержит все детали системы пользователя (IDCOL
,EMAIL
,ISLOCKED
и т.д.)USERLOG
представляет собой журнал, когда пользователь регистрируется на систему (USERID
,LOGIN
(поле даты))
поле Ключ: USERS.IDCOL
= USERLOG.USERID
Удалены пользователи будут удалены из таблицы USERS; поэтому в USERLOG
будут указаны ID, которые не будут соответствовать таблице USERS
.
Я хочу сделать две вещи в списке пользователей:
Блокировка любых пользователей, которые не доступны системы за последние 9 месяцев (т.е. их ID не появляется в
USERLOG
в последние 9 месяцев, которые я думаю, будет использовать что-то вроде:months_between(SYSDATE , USERLOG.LOGIN) <= 9
- Блокировка всех пользователей, которые имеют только одну запись в
USERLOG
, до тех пор, как это не в течение последнего месяца/30 дней (т.е. при создании учетной записи)
Чтобы заблокировать пользователя, мне нужно обновить USERS.ISLOCKED
столбец из 0
в 1
Большое спасибо
Rajesh, я отредактировал ваш ответ, чтобы обновить пару названий полей, а также исправил пару проблем с синтаксисом во втором блоке кода, но в противном случае это место, спасибо очень. – Rob
По какой-то причине мои изменения не были приняты, если другие используют, во втором кодовом блоке 'add_months (sysdate-1)' требуется запятая перед '-1', а левая скобка нужна до' 1 = (' – Rob
Сделал изменения. Спасибо, Роб. –