Java DB를 사용하고 있습니다 (Java DB는 Apache Derby의 오라클 지원 버전이며 Apache Derby와 동일한 바이너리를 포함합니다.) 소스 : http://www.oracle.com/technetwork/java/javadb/overview/faqs-jsp-156714.html#1q2.다중 조인을 사용하여 테이블 업데이트
하나의 테이블에서 열을 업데이트하려고하지만 정확한 결과 (내 디자인이나 선택 사항이 아님)를 얻으려면 동일한 데이터베이스 내의 다른 두 테이블과이 테이블을 조인해야합니다.
다음은 세 개의 테이블입니다. ADSID는 Vehicles와 Customers를 연결하는 키이고 Salesresp의 ADDRESS 및 ZIP은 Customers와 연결하는 데 사용됩니다. (다른 필드는 간결하게하기 위해 왼쪽으로.)
Salesresp (주소, 우편, prevsale)
고객 (adsid, 주소, 우편 번호)
차량 (adsid, selldate)
목표는 이전에 지정된 날짜 이전에 차량을 구입 한 SalesResp 테이블에서 고객을 찾는 것입니다. 고객 및 Vechiles의 주소 및 adsid로 식별됩니다.
단일 조인을 사용하여 열에 대한 업데이트를 보았고 여기에 내 자신의 업데이트/조인 중 하나 (UPDATE with INNER JOIN)에 대한 질문을 실제로 보았습니다. 하지만 이제는 한 걸음 더 나아가서 모든 정보를 얻기 위해 두 테이블을 모두 사용해야합니다.
내가 다 가입 SELECT 문이 작업을 얻을 수 있습니다 : 나는 다중 가입 UPDATE 문이 동작하지 않습니다 그러나
SELECT * FROM salesresp
INNER JOIN customers ON (SALESRESP.ZIP = customers.ZIPCODE) AND
(SALESRESP.ADDRESS = customers.ADDRESS)
INNER JOIN vehicles ON (Vehicles.ADSId =Customers.ADSId)
WHERE (VEHICLES.SELLDATE<'2013-09-24');
.
UPDATE salesresp SET PREVSALE = (SELECT SALESRESP.address FROM SALESRESP
WHERE SALESRESP.address IN (SELECT customers.address FROM customers
WHERE customers.adsid IN (SELECT vehicles.adsid FROM vehicles
WHERE vehicles.SELLDATE < '2013-09-24')));
그리고이 오류가 제공하고 있습니다 :
I는 다음과 같이 업데이트를 시도하려고했습니다 "오류 코드 30000, SQL 상태 21000 : 스칼라 서브 쿼리는 단 하나의 행을 반환 할 수 있습니다."
하지만 "IN"으로 바꾸면 "IN"(오류 코드 30000, SQL 상태 42X01)이 발생하여 구문 오류가 발생합니다.
나는 또한 뻔뻔스러운 내부 조인을 시도했지만이 코드를 실행하려고 시도 할 때 "FROM"코드를 사용하는 것에 대해 불평하는 "Error code 30000, SQL state 42X01" 예어.
update salesresp set prevsale = vehicles.selldate
from salesresp sr
inner join vehicles v
on sr.prevsale = v.selldate
inner join customers c
on v.adsid = c.adsid
where v.selldate < '2013-09-24';
그리고 다른 구성에서
: 는 "INNER"불쾌 발견update salesresp
inner join customer on salesresp.address = customer.address
inner join vehicles on customer.adsid = vehicles.ADSID
set salesresp.SELLDATE = vehicles.selldate where vehicles.selldate < '2013-09-24';
: 오류 코드 30000를, SQL 상태 42X01 : 구문 오류 : 라인 3에서 "내"가 발생, 1 열
이 다중 조인 업데이트 쿼리를 작동 시키려면 어떻게해야합니까? 아니면 단순히이 데이터베이스로 가능하지 않습니까?
모든 조언을 주시면 감사하겠습니다.