Если вы всегда использовать фиксированное значение, для Вас использование exists
для поиска записей, которые соответствуют условию в других таблицах:
UPDATE ORDERDETAIL OD
SET OD.PRODUCTID = 'BASE1'
WHERE EXISTS (
SELECT NULL
FROM CUSTOMER C
JOIN ORDERS O ON O.CUSTOMERID = C.CUSTOMERID
WHERE C.FIRSTNAME = 'JANE'
AND C.LASTNAME = 'DOE'
AND O.ORDERID = OD.ORDERID
);
Или подзапрос:
UPDATE ORDERDETAIL OD
SET OD.PRODUCTID = 'BASE1'
WHERE OD.ORDERID IN (
SELECT O.ORDERID
FROM CUSTOMER C
JOIN ORDERS O ON O.CUSTOMERID = C.CUSTOMERID
WHERE C.FIRSTNAME = 'JANE'
AND C.LASTNAME = 'DOE'
);
Oracle doesn't allow you иметь присоединиться непосредственно в отчете обновления. Если бы вы получили новое значение из другой таблицы, вы бы something like this.
Вы можете запустить это без каких-либо ошибок? Кроме того, похоже, что вам не хватает соединения между деталями заказа и клиентом. У вас есть столбец идентификатора клиента в таблице сведений о заказах? –