Teradata - Tham gia

Tham gia được sử dụng để kết hợp các bản ghi từ nhiều hơn một bảng. Các bảng được nối dựa trên các cột / giá trị chung từ các bảng này.

Có nhiều loại Tham gia khác nhau có sẵn.

  • Tham gia bên trong
  • Tham gia bên ngoài bên trái
  • Tham gia bên ngoài bên phải
  • Tham gia đầy đủ bên ngoài
  • Tự tham gia
  • Tham gia chéo
  • Tham gia sản xuất Descartes

THAM GIA INNER

Tham gia bên trong kết hợp các bản ghi từ nhiều bảng và trả về các giá trị tồn tại trong cả hai bảng.

Cú pháp

Sau đây là cú pháp của câu lệnh INNER JOIN.

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

Thí dụ

Hãy xem xét bảng nhân viên và bảng lương sau đây.

Nhân viên Không Tên đầu tiên LastName Ngày tham gia Bộ phận Không Ngày sinh
101 Mike James 27/3/2005 1 1/5/1980
102 Robert Williams 25/4/2007 2 3/5/1983
103 Peter Paul 21/3/2007 2 4/1/1983
104 Alex Stuart 2/1/2008 2 11/6/1984
105 Robert James 1/4/2008 3 12/1/1984
Nhân viên Không Tổng Khấu trừ NetPay
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

Truy vấn sau đây kết hợp bảng Nhân viên và bảng Lương trên cột chung EmployeeNo. Mỗi bảng được gán một bí danh A & B và các cột được tham chiếu với bí danh chính xác.

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

Khi truy vấn trên được thực thi, nó sẽ trả về các bản ghi sau. Nhân viên 105 không được bao gồm trong kết quả vì nó không có bản ghi phù hợp trong bảng Lương.

*** 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

THAM GIA NGOÀI TRỜI

LEFT OUTER JOIN và RIGHT OUTER JOIN cũng kết hợp các kết quả từ nhiều bảng.

  • LEFT OUTER JOIN trả về tất cả các bản ghi từ bảng bên trái và chỉ trả về các bản ghi phù hợp từ bảng bên phải.

  • RIGHT OUTER JOIN trả về tất cả các bản ghi từ bảng bên phải và chỉ trả về các hàng phù hợp từ bảng bên trái.

  • FULL OUTER JOINkết hợp các kết quả từ cả LEFT OUTER và RIGHT OUTER JOINS. Nó trả về cả hàng phù hợp và không khớp từ các bảng đã kết hợp.

Cú pháp

Sau đây là cú pháp của câu lệnh OUTER JOIN. Bạn cần sử dụng một trong các tùy chọn từ LEFT OUTER JOIN, RIGHT OUTER JOIN hoặc 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>;

Thí dụ

Hãy xem xét ví dụ sau về truy vấn LEFT OUTER JOIN. Nó trả về tất cả các bản ghi từ bảng Nhân viên và các bản ghi khớp từ bảng Lương.

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

Khi truy vấn trên được thực thi, nó tạo ra kết quả sau. Đối với nhân viên 105, giá trị NetPay là NULL, vì nó không có bản ghi phù hợp trong bảng Lương.

*** 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             ?

THAM GIA CROSS

Cross Join nối mọi hàng từ bảng bên trái sang mọi hàng từ bảng bên phải.

Cú pháp

Sau đây là cú pháp của câu lệnh 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;

Khi truy vấn trên được thực thi, nó tạo ra kết quả sau. EmployeeNo 101 từ bảng Nhân viên được kết hợp với mỗi và mọi bản ghi từ Bảng lương.

*** 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