2013-08-29 1 views
0

다음 sql 명령을 사용하여 일부 레코드를 검색합니다.외부 조인 테이블에 대한 Informix sql 검색

select con.type, con.contract_id, con.account, chk.account, chk.check_flags 
from contract_scan_image con, outer check_customer_info chk 
where con.type='AP' and con.account=chk.account 

그리고 결과는 다음과 같습니다. 테이블에서 필드 "계정"에 아무것도없는 경우에도 기록은 아직 발견되는 이유는

type contract_id account  account  check_flags      

AP 1413178  03071800181            
AP 1413774  03071800569            
AP 1414218  03071800810            
AP 1415937  03071900602 03071900602 000000222010000000000000000000 
AP 1417948  03072000524 03072000524 000000222010000000000000000000 
AP 1417999  03072000555            
AP 1418203  03072000667 03072000667 000000222010000000000000000000 
AP 1418216  03072000672 03072000672 000000220010000000000000000000 
...... 

?

+1

같은 한 Statment을 writign하려고 다른 테이블과 일치가없는 경우에도 첫 번째 테이블에 행을 가져올 것이다 외부 조인 사용하는 원인 않습니다; 일치가없는 경우에도 행을 유지합니다. 일치하는 곳에서만 결과를 원한다면'INNER JOIN' *을 사용하십시오. (또한, ANSI92 표준으로 대체 된 조인에 대한','표기법을 사용하지 않는 것이 좋습니다. 1992 년, 20 년이 넘었습니다. 전에 ... 'INNER JOIN'에 대한 웹 검색) * – MatBailie

+0

있어. 내 모든 개념이 잘못되었습니다. 그러나 informix에서 내부 조인의 sytax가 다음과 같아야합니다. con_type, con.contract_id, con.account, chk.account, chk.check_flags를 선택하십시오.contract_scan_image con , check_customer_info chk con.type = 'AP'및 con.account = chk.account – Johnny

+0

INFORMIX는 INNER JOIN을 지원하지 않습니까? 이것이 1992 년 이래로 도입 된 문법입니다 ... – MatBailie

답변

1

당신이이이`에 가입 OUTER` 정확히이기 때문에이

select con.type, con.contract_id, con.account, chk.account, chk.check_flags 
from contract_scan_image con inner join check_customer_info chk on con .account = chk.account 
where con.type='AP' 
+0

네, 저의 모든 개념이 잘못되었습니다 ... 그러나 내부 조인을위한 informix의 sytax에 대한 위의 코멘트를보십시오. 고맙습니다. – Johnny