2013-06-03 6 views
1

Я этот рабочий запрос:Update ГДЕ поле в

SELECT idVendRigMov 
FROM VendRM 
WHERE idArtPromo IS NULL AND 
     (idArtCategoria NOT IN (SELECT idArtCategoria FROM VendScontiCatEscl WHERE idVendSconti=2) OR idArtCategoria IS NULL) AND idVendTesMov=1 

, возвращающий список «idVendRigMov»;

мне нужно сделать обновление на каждой строке этого результата, как это:

UPDATE VendRigMov SET Sconto='7' WHERE idVendRigMov IN (result of previous query); 

Я попытался это:

UPDATE VendRigMov SET Sconto='7' WHERE idVendRigMov IN 
(
SELECT idVendRigMov FROM VendRM WHERE idArtPromo IS NULL AND (idArtCategoria NOT IN (SELECT idArtCategoria FROM VendScontiCatEscl WHERE idVendSconti=2) OR 
idArtCategoria IS NULL) AND idVendTesMov=1 
) 

, но я получаю эту ошибку: «Определение таблица «VendRM» предотвращает операцию UPDATE в таблице «VendRigMov»

Как это сделать?

+0

Вы уверены, что это таблицы, а не виды? –

+0

VendRigMov - это таблица, VendRM is View .. – user2396911

ответ

1

VendRM, вероятно, является видом, относящимся к таблице VendRigMov. Если это так, вы можете исправить эту проблему, используя дополнительный уровень подзапросов. Ваш запрос:

UPDATE VendRigMov 
    SET Sconto = '7' 
    WHERE idVendRigMov IN (SELECT idVendRigMov 
          FROM VendRM 
          WHERE idArtPromo IS NULL AND 
           (idArtCategoria NOT IN (SELECT idArtCategoria 
                 FROM VendScontiCatEscl 
                 WHERE idVendSconti=2) OR 
                   idArtCategoria IS NULL 
                 ) AN 
           idVendTesMov=1 
         ) 

Это должно работать:

UPDATE VendRigMov 
    SET Sconto = '7' 
    WHERE idVendRigMov IN (select idVendRigMov 
          from (SELECT idVendRigMov 
           FROM VendRM 
           WHERE idArtPromo IS NULL AND 
             (idArtCategoria NOT IN (SELECT idArtCategoria 
                   FROM VendScontiCatEscl 
                   WHERE idVendSconti=2) OR 
                    idArtCategoria IS NULL 
                  ) AN 
             idVendTesMov=1 
           ) t 
         ) 

Это заставляет MySQL для конкретизации подзапроса. Когда вы создаете экземпляр, у вас больше нет проблемы с внешней таблицей, на которую сразу обращаются в подзапросе.

+0

Спасибо, что работает! :) – user2396911

Смежные вопросы