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