2014-10-06 3 views
0

Я использую JavaDB и работаю с двумя таблицами в одной базе данных.UPDATE with INNER JOIN

Я пытаюсь обновить столбец PrevSales в таблице SalesResp со значениями, которые находятся в столбце «SellDate» таблицы «Транспортные средства», когда SellDate таблицы транспортного средства находится перед указанной датой. Я сопоставляю данные между двумя таблицами, используя столбец «VIN», который присутствует в обеих таблицах.

Я постоянно получаю ошибки, связанные с внутренним соединением в моем коде, состояние SQL 42x01.

UPDATE SALESRESP JOIN VEHICLES ON (SALESRESP.VIN = VEHICLES.VIN) 
SET SALESRESP.PrevSale = VEHICLES.SELLDATE WHERE 
(((VEHICLES.SELLDATE)<'2013-09-24')); 

Я пробовал различные конфигурации, замена внутреннего соединения и SET размещения, я попытался в том числе «от» пункта. Ничто не работает. Любой совет?

EDIT: Точный код ошибки:

Error code 30000, SQL state 42X01: Syntax error: Encountered "JOIN" at line 1, column 19. 
+0

Пожалуйста, сообщите об ошибке, которую вы получаете. Кроме того, я не думаю, что вам нужно использовать INNER, Join должно быть достаточно. – JLampon

+0

Отредактировано. Также попробовал это без «INNER», и он все еще суетился о существовании слова «JOIN». –

ответ

1

Используйте следующий код и увидеть, заменить дату вместо SYSDATE.

UPDATE SALESRESP 
SET SALESRESP.PrevSale = (SELECT VEHICLES.SELLDATE FROM VEHICLES 
WHERE SALESRESP.VIN = VEHICLES.VIN AND 
VEHICLES.SELLDATE <'2013-09-24'); 
+0

Присоединение не обязательно? Я думал, что мне нужно, когда вы работаете с двумя разными таблицами? EDIT: попробовал и получил ошибку еще раз: Код ошибки 30000, состояние SQL 42X01: Ошибка синтаксиса: «FROM» в строке 1, столбец 61. –

+1

Ключевое слово Join действительно не нужно. Существуют способы, которыми вы можете моделировать соединения, используя условия внутри оператора where. выполняет ли вышеуказанный код для вас? –

+0

Хорошо, хорошо знать о соединениях. Но он все еще не работает для меня. Тот же код ошибки, только на этот раз с «FROM» Код ошибки 30000, состояние SQL 42X01: Ошибка синтаксиса: «FROM» в строке 1, столбец 61. –

0
UPDATE S SET S.PrevSale = V.SELLDATE FROM SALESRESP S 
inner join VEHICLES V on S.VIN = V.VIN AND V.SELLDATE < '2013-09-24' 
0

Хорошо, давайте попробуем быть более явным:

UPDATE SALESRESP SET SALESRESP.PrevSale = VEHICLES.SELLDATE FROM VEHICLES JOIN SALESREP ON (SALESRESP.VIN = VEHICLES.VIN) WHERE (((VEHICLES.SELLDATE)<'2013-09-24'))

Смотрите, если это будет работать.

+0

Это дает мне ошибку: «Код ошибки 30000, состояние SQL 42X03: Имя столбца« VEHICLES.SELLDATE »находится в более чем одной таблице в списке FROM». Я попытался добавить еще несколько(), чтобы попытаться отделить его больше, но это тоже не понравилось. –

+0

Извините, забыл изменить ссылку JOIN, см. Изменение выше. – JLampon

+0

Он все еще продолжает рассказывать о «vehicle.selldate», являющемся колонкой в ​​более чем одном столе. Но спасибо за помощь! –