Teradata-조인

조인은 둘 이상의 테이블에서 레코드를 결합하는 데 사용됩니다. 테이블은 이러한 테이블의 공통 열 / 값을 기반으로 조인됩니다.

다양한 유형의 조인을 사용할 수 있습니다.

  • 내부 조인
  • 왼쪽 외부 결합
  • 오른쪽 외부 결합
  • 전체 외부 결합
  • 셀프 조인
  • 교차 결합
  • 데카르트 생산 결합

내부 조인

내부 조인은 여러 테이블의 레코드를 결합하고 두 테이블에있는 값을 반환합니다.

통사론

다음은 INNER JOIN 문의 구문입니다.

SELECT col1, col2, col3…. 
FROM  
Table-1 
INNER JOIN 
Table-2 
ON (col1 = col2) 
<WHERE condition>;

다음 직원 테이블 및 급여 테이블을 고려하십시오.

직원 아니요 이름 JoinedDate 부서 번호 생일
101 마이크 제임스 2005 년 3 월 27 일 1 1980 년 1 월 5 일
102 로버트 윌리엄스 2007 년 4 월 25 일 2 1983 년 3 월 5 일
103 베드로 2007 년 3 월 21 일 2 1983 년 4 월 1 일
104 알렉스 스튜어트 2008 년 2 월 1 일 2 1984 년 11 월 6 일
105 로버트 제임스 2008 년 1 월 4 일 1984 년 12 월 1 일
직원 아니요 심한 공제 순이익
101 40,000 4,000 36,000
102 80,000 6,000 74,000
103 90,000 7,000 83,000
104 75,000 5,000 70,000

다음 쿼리는 EmployeeNo 공통 열에서 Employee 테이블과 Salary 테이블을 조인합니다. 각 테이블에는 별칭 A와 B가 할당되고 열은 올바른 별칭으로 참조됩니다.

SELECT A.EmployeeNo, A.DepartmentNo, B.NetPay 
FROM  
Employee A 
INNER JOIN 
Salary B 
ON (A.EmployeeNo = B. EmployeeNo);

위 쿼리를 실행하면 다음과 같은 레코드를 반환합니다. 직원 105는 Salary 테이블에 일치하는 레코드가 없기 때문에 결과에 포함되지 않습니다.

*** Query completed. 4 rows found. 3 columns returned. 
*** Total elapsed time was 1 second. 
 EmployeeNo   DepartmentNo     NetPay 
-----------  ------------   ----------- 
    101           1            36000 
    102           2            74000 
    103           2            83000 
    104           2            70000

외부 조인

LEFT OUTER JOIN 및 RIGHT OUTER JOIN도 여러 테이블의 결과를 결합합니다.

  • LEFT OUTER JOIN 왼쪽 테이블에서 모든 레코드를 반환하고 오른쪽 테이블에서 일치하는 레코드 만 반환합니다.

  • RIGHT OUTER JOIN 오른쪽 테이블에서 모든 레코드를 반환하고 왼쪽 테이블에서 일치하는 행만 반환합니다.

  • FULL OUTER JOINLEFT OUTER 및 RIGHT OUTER JOINS의 결과를 결합합니다. 조인 된 테이블에서 일치하는 행과 일치하지 않는 행을 모두 반환합니다.

통사론

다음은 OUTER JOIN 문의 구문입니다. LEFT OUTER JOIN, RIGHT OUTER JOIN 또는 FULL OUTER JOIN의 옵션 중 하나를 사용해야합니다.

SELECT col1, col2, col3…. 
FROM  
Table-1 
LEFT OUTER JOIN/RIGHT OUTER JOIN/FULL OUTER JOIN 
Table-2 
ON (col1 = col2) 
<WHERE condition>;

LEFT OUTER JOIN 쿼리의 다음 예를 고려하십시오. Employee 테이블의 모든 레코드와 Salary 테이블의 일치하는 레코드를 반환합니다.

SELECT A.EmployeeNo, A.DepartmentNo, B.NetPay 
FROM  
Employee A 
LEFT OUTER JOIN 
Salary B 
ON (A.EmployeeNo = B. EmployeeNo) 
ORDER BY A.EmployeeNo;

위 쿼리가 실행되면 다음과 같은 출력이 생성됩니다. 직원 105의 경우 NetPay 값은 Salary 테이블에 일치하는 레코드가 없기 때문에 NULL입니다.

*** Query completed. 5 rows found. 3 columns returned. 
*** Total elapsed time was 1 second. 
 EmployeeNo  DepartmentNo     NetPay 
-----------  ------------   ----------- 
    101           1           36000 
    102           2           74000 
    103           2           83000 
    104           2           70000 
    105           3             ?

크로스 조인

교차 조인은 왼쪽 테이블의 모든 행을 오른쪽 테이블의 모든 행에 조인합니다.

통사론

다음은 CROSS JOIN 문의 구문입니다.

SELECT A.EmployeeNo, A.DepartmentNo, B.EmployeeNo,B.NetPay 
FROM  
Employee A 
CROSS JOIN 
Salary B 
WHERE A.EmployeeNo = 101 
ORDER BY B.EmployeeNo;

위 쿼리가 실행되면 다음과 같은 출력이 생성됩니다. Employee 테이블의 EmployeeNo 101은 Salary Table의 모든 레코드와 결합됩니다.

*** Query completed. 4 rows found. 4 columns returned. 
*** Total elapsed time was 1 second. 
 EmployeeNo  DepartmentNo   EmployeeNo    NetPay 
-----------  ------------  -----------  ----------- 
    101           1            101         36000 
    101           1            104         70000 
    101           1            102         74000 
    101           1            103         83000