멍청한 질문 시간. 오라클 10g.조인에 영향을 미치는 Where 절
where 절이 결합에 영향을 줄 수 있습니까? 물론 이것은 인위적인 예입니다
select * from
(select product, product_name from products p
join product_serial ps on product.id = ps.id
join product_data pd on pd.product_value = to_number(p.product_value)) product_result
where product_name like '%prototype%';
:
나는 형태의 쿼리를 가지고있다. 테이블 구조를 보여줄 필요가 전혀 없습니다. 상상을 초월합니다. 불행히도 실제 테이블 구조 나 쿼리를 표시 할 수는 없습니다. 이 경우, p.product_value는 VARCHAR2 필드이며, 특정 행에서는 텍스트가 아닌 내부에 ID가 저장됩니다. (예, 디자인이 좋지 않지만 상속 된 것으로 변경할 수 없습니다.)
문제는 가입에 있습니다. where 절을 생략하면 쿼리가 작동하고 행이 반환됩니다. 그러나 where 절을 추가하면 pd.product_value = to_number (p.product_value) 조인 조건에서 "invalid number"오류가 발생합니다.
분명히 p.product_value 필드에 숫자가 아닌 행이 결합되면 "잘못된 번호"오류가 발생합니다. 그러나, 내 질문에 어떻게 선택되는 행입니까? 외부 where 절없이 조인이 성공하면 outer where 절이 조인 결과에서 행을 선택하면 안됩니까? 어떤 일이 일어나고있는 것은 내부 쿼리에 조인이 있더라도 where 절이 조인 된 행에 영향을주는 것입니다.
제 질문은 의미가 있습니까?
'to_char (pd.product_value) = p.product_value'라는 약간의 여유를 줄 수 있습니다. – briantyler