Как это возможно, что этот оператор выбора работает, но этот оператор обновления не работает в VFP 9?

обзор

Я пытаюсь написать select Заявление в Visual Fox Pro 9 (VFP9) для обновления строки (и, в конечном счете, нескольких других записей), я сначала написал оператор select, и он работал отлично, я получил ожидаемый результат.

Но я немного новичок в синтаксисе VFP9, а кто не будет в 2013 году? Я ожидаю UPDATE который содержит мой select работать немного как UPDATE INNER JOIN в реальном не фоксовом SQL.

Мое утверждение select, оно отлично работает.

SELECT temptable3.constate FROM temptable3, prw22001 ;
  WHERE prw22001.empno = temptable3.empno AND temptable3.pssn = prw22001.ssn AND temptable3.empno='5202' AND temptable3.constate <> prw22001.stateid AND prw22001.procyear='2012'

Моя инструкция по обновлению (которая содержит мою инструкцию выбора и не работает):

UPDATE prw22001 ;
  SET prw22001.stateid = SELECT temptable3.constate FROM temptable3, prw22001 ;
  WHERE prw22001.empno = temptable3.empno AND temptable3.pssn = prw22001.ssn AND temptable3.empno='5202' AND temptable3.constate <> prw22001.stateid AND prw22001.procyear='2012'

Я получаю ошибку, которая читает Microsoft Visual FoxPro Command contains unrecognized phrase/keyword. Я не понимаю, о чем идет речь, и хорошие 4/5 моего запроса - это мое первоначальное утверждение выбора.

1 ответ

Решение

Преобразовать ваше утверждение так:

UPDATE prw22001 ;
  SET prw22001.stateid = temptable3.constate ;
  FROM temptable3, prw22001 ;
  WHERE prw22001.empno = temptable3.empno AND temptable3.pssn = prw22001.ssn AND temptable3.empno='5202' AND temptable3.constate <> prw22001.stateid AND prw22001.procyear='2012'
Другие вопросы по тегам