복붙노트

[SQL] 어떻게 "유산"외부 왼쪽 오라클에 문을 가입 변환합니까?

SQL

어떻게 "유산"외부 왼쪽 오라클에 문을 가입 변환합니까?

나는 계좌 번호 떨어져 함께 결합을 기반으로 할 수 있습니다 Oracle 데이터베이스에서 두 테이블 (A 및 G)가 있습니다. 이에 대한 한 가지주의 테이블 (G) 중 하나가 다른 것보다 적은 수의 레코드에 대한 80한다는 것이다. 내가 함께 두 개의 테이블을 조회 할 때, 나는 우리가 누락 된 80 행의 열에서 NULL 데이터를 볼 그래서, 모든 행을 얻을 필요가있다.

나는 현재 수행이 왼쪽 외부 다음 "기존"구문을 사용하여 쿼리 조인 오라클 문이 :

SELECT A.AccountNo,
       A.ParcelNo,
       A.LocalNo,
       A.PrimaryUseCode, 
       A.DefaultTaxDistrict,
       RTRIM(G.Section),
       RTRIM(G.Township),
       RTRIM(g.Range)

  FROM tblAcct A, tblAcctLegalLocation G

 WHERE A.verstart <= '20100917999' AND A.verend > '20100917999' AND A.DefaultTaxDistrict = '2291' 
       AND (SUBSTR(A.AccountNo,1,1) = 'R' or SUBSTR(A.AccountNo,1,1)= 'I') 
       AND SUBSTR(a.ParcelNo,1,1)<> '7' and substr(a.ParcelNo,1,1)<>'8'
       AND A.AcctStatusCode IN ('A', 'T', 'E') 
       AND A.AccountNo = G.AccountNo(+)
       AND G.verstart(+) <= '20100917999' and G.verend(+) > '20100917999'
ORDER BY A.ParcelNo, A.LocalNo

나는이 구문을 지원하는 오라클의 최신 버전을 이야기하고있어 이후 "표준"LEFT은 가입 유형의 쿼리에이 쿼리를 변환 할 노력하고있어. 나는 기본을 시도했습니다

LEFT OUTER JOIN ON A.AccountNo = G.AccountNo 

하지만이 작동하지 않습니다. 내 쿼리는 전체 금액보다 적은 80 개 행을 반환 바람.

아무도 내가 부족 또는 얼마나 제대로 쿼리의 형식을 무엇을 말해 줄 수?

해결법

  1. ==============================

    1.사용하다:

    사용하다:

      SELECT a.AccountNo,
             a.ParcelNo,
             a.LocalNo,
             a.PrimaryUseCode, 
             a.DefaultTaxDistrict,
             TRIM(g.Section),
             TRIM(g.Township),
             TRIM(g.Range)
         FROM tblAcct A
    LEFT JOIN tblAcctLegalLocation g ON g.accountno = a.accountno
                                    AND g.verstart <= '20100917999' 
                                    AND g.verend > '20100917999'
        WHERE a.verstart <= '20100917999' 
          AND a.verend > '20100917999' 
          AND a.DefaultTaxDistrict = '2291' 
          AND SUBSTR(a.AccountNo,1,1) IN ('R', 'I') 
          AND SUBSTR(a.ParcelNo,1,1) NOT IN ('7', '8')
          AND a.AcctStatusCode IN ('A', 'T', 'E') 
     ORDER BY a.ParcelNo, a.LocalNo
    

    당신이 (+)로 표시된 참조 모두가 OUTER에 포함되어야합니다는 기준을 가입 할 수 있습니다. 외부 조인에 가입하기 전에, 기준이 적용된다.

  2. from https://stackoverflow.com/questions/4001045/how-do-i-convert-a-legacy-left-outer-join-statement-in-oracle by cc-by-sa and MIT license