스택 오버 플로우에 새로운 브랜드이므로 게시 할 때 잘못 처리하면 사과드립니다. 이 코드 블록에 몇 가지 문제가 있습니다. 내 조인에 문제가 있다고 생각합니다. 오라클 코드에서의 에러 - 동일하지 않음 연산
UPDATE rental_item ri
SET rental_item_price =
(SELECT p.amount
FROM price p INNER JOIN common_lookup cl1
ON p.price_type = cl1.common_lookup_id CROSS JOIN rental r
CROSS JOIN common_lookup cl2
WHERE p.item_id = ri.item_id AND ri.rental_id = r.rental_id
AND ri.rental_item_type = cl2.common_lookup_id
AND cl1.common_lookup_code = cl2.common_lookup_code
AND r.check_out_date
BETWEEN p.start_date AND p.end_date);
코드 블록
은 상기 지정된 기준을 이용하여 "AMOUNT '항목의 데이터로"RENTAL_ITEM_PRICE'항목을 작성하기로한다. WHERE 및 AND 문에서 기준을 제거 할 수 없습니다.RENTAL_ITEM_ID RENTAL_ITEM_PRICE AMOUNT
-------------- ----------------- ------
1001 5
1002 5
1003 5
1004 5
1005 5
1006 5
1007 5
1008 5
1009 5
1010 3
1011 3
1012 10
1013 15
코드를 실행하면 13 개의 행이 업데이트되었지만 볼 수 있듯이 정보가 기록되지 않습니다. 또한 오류를 반환하지 않습니다.
은 다음과 같아야합니다
RENTAL_ITEM_ID RENTAL_ITEM_PRICE AMOUNT
-------------- ----------------- ----------
1001 5 5
1002 5 5
1003 5 5
1004 5 5
1005 5 5
1006 5 5
1007 5 5
1008 5 5
1009 5 5
1010 3 3
1011 3 3
1012 10 10
1013 15 15
쿼리가 예상 값을 단순 선택으로 반환합니까? 나는 단지 어떤 데이터도 찾지 못했을 것이라고 생각하지만, 왜 데이터를 보지 않고 왜 추측 할 수는 없다. 왜 당신은 십자가 조인을하고 where 조약을 통해 내부 조인으로 되돌려 놓고 있습니까? –
내 생각 엔 하위 쿼리가 0 행을 반환하므로 값이 NULL로 업데이트됩니다. –
@AlexPoole 테스트를 위해 간단한 SELECT 문을 사용하려고했으나 일부 별칭이 UPDATE 줄없이 제대로 정의되지 않았기 때문에 실패합니다. 누락 된 데이터와 관련하여 하위 쿼리에서 참조되는 모든 필드에는 정보가 들어 있습니다. 따라서 데이터를 가져올 수 있습니다. Gordon Linoff가 하위 쿼리가 0을 반환한다고 언급 한 것으로 추측합니다. 조인이 쓰여지는 방식이 문제를 일으키는 것 같아요. 하위 쿼리를 수정하는 방법에 대한 제안 사항이 있습니까? 미안해, 내 질문에 더 좋은 방법이 없어. – kb4000