2014-10-06 7 views
0

JavaDB를 사용하고 있으며 동일한 데이터베이스에서 두 테이블을 사용하고 있습니다.INNER JOIN을 사용하여 업데이트

"SalesResp"테이블의 PrevSales 열을 Vehicle 테이블의 SellDate가 지정된 날짜 이전 일 때 "Vehicles"테이블의 "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 게재 위치, 나는 "FROM"절을 포함하여 시도했습니다. 아무것도 작동하는 것 같습니다. 어떤 충고?

편집 : 정확한 오류 코드 :

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 : 구문 오류 : 줄 1, 열 61에서 "FROM"이 발생했습니다. –

+1

키워드 조인은 실제로 필요하지 않습니다. 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

OK, 좀 더 명시 적으로있는 해보자 : 그 작동하는지

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

여전히 "veh.selldate"가 하나 이상의 테이블에있는 열에 관한 것입니다. 하지만 도움을 주셔서 감사합니다! –

관련 문제