PL / SQL: запрос UPDATE с несколькими совпадениями в предложении WHERE - PullRequest
4 голосов
/ 04 января 2012

TABLE_A:

ID      TYPE    DATE_UPLOADED   EXPIRED
9872    APPLE   03-JAN-11       0
9874    MANGO   03-JAN-11       0
9873    GRAPE   03-JAN-11       0

TABLE_B:

TYPE    LIFE
APPLE   3
MANGO   2
GRAPE   1

Чего я хотел бы достичь, это обновить поле EXPIRED
в TABLE_A до значения1, когда DATE_UPLOADED
превысило значение LIFE для этого типа на текущую дату.

В этом запросе на обновление я сейчас застрял.Я знаю, что это
неправильно, вот где мне нужна ваша помощь.

Запрос на обновление:

UPDATE TABLE_A
SET EXPIRED = 1
WHERE EXPIRED = 0
AND (TRUNC(SYSDATE) - TRUNC(DATE_UPLOADED)) >
(
    SELECT LIFE
    FROM TABLE_B 
);

Обратите внимание, что поле TYPE может быть любым и может быть больше
, чем указано в данных примера.

1 Ответ

4 голосов
/ 04 января 2012

Вы не связываете две таблицы. Попробуйте что-то вроде этого:

UPDATE TABLE_A
SET EXPIRED = 1
WHERE EXPIRED = 0
AND (TRUNC(SYSDATE) - TRUNC(DATE_UPLOADED)) >
(
    SELECT LIFE
    FROM TABLE_B 
    WHERE TYPE = TABLE_A.TYPE
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...