Обновить таблицу Oracle для нескольких записей - PullRequest
1 голос
/ 24 ноября 2010

У меня есть несколько таблиц в моей базе данных Oracle, как показано ниже

**IM_FP**
FP_ID
FP_NAME
FP_STATUS

**IM_FP_DTL**
FP_DTL_ID
FP_ID
IM_ID
FP_DATE

FP_ID    FP_NAME   FP_STATUS
1         ABC        TRUE
2         DEF        TRUE
3         GHI        TRUE
4         TEC        TRUE
5         KEC        TRUE

FP_DTL_ID         FP_ID   IM_ID     FP_DATE
1                  1        1        1-JAN-1996
2                  2        1       10-JAN-1996
3                  3        1        2-FEB-1996
4                  4        2        1-JAN-1996
5                  5        3        2-JAN-2010

Между обеими таблицами есть связь 1-1.Но IM_ID может быть дубликатом в таблице FP_DTL и изменять значение FP_STATUS в таблице IM_FP на false для всех записей, но True для записи с MAX (FP_DTL_ID).

Например, в приведенном выше сценарии FP_STATUS вТаблица IM_FP для первых двух записей будет FALSE, а третья запись будет TRUE

Select IM_ID from FP_DTL GROUP BY IM_ID HAVING COUNT(IM_ID)>1

и даст мне все AM_ID, которые являются дубликатами.

Пожалуйста, помогите

1 Ответ

0 голосов
/ 24 ноября 2010

Как насчет:

UPDATE IM_FP
SET FP_STATUS = 'TRUE'
WHERE FP_ID IN
  (SELECT MAX(FP_DTL_ID)
   FROM   IM_FP_DTL
   GROUP BY IM_ID)
AND (FP_STATUS IS NULL OR FP_STATUS != 'TRUE');

UPDATE IM_FP
SET FP_STATUS = 'FALSE'
WHERE FP_ID NOT IN
  (SELECT MAX(FP_DTL_ID)
   FROM   IM_FP_DTL
   GROUP BY IM_ID)
AND (FP_STATUS IS NULL OR FP_STATUS != 'FALSE');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...