Các phép nối được sử dụng để kết hợp hai bảng có liên quan với nhau.
Trong ví dụ của bạn, bạn có thể kết hợp bảng Nhân viên và bảng Phòng ban, như sau:
SELECT FNAME, LNAME, DNAME
FROM
EMPLOYEE INNER JOIN DEPARTMENT ON EMPLOYEE.DNO=DEPARTMENT.DNUMBER
Điều này sẽ dẫn đến một tập bản ghi như:
FNAME LNAME DNAME
----- ----- -----
John Smith Research
John Doe Administration
Tôi đã sử dụng INNER JOIN
bên trên. INNER JOIN
s kết hợp hai bảng để chỉ các bản ghi có kết quả phù hợp trong cả hai bảng được hiển thị và chúng được tham gia trong trường hợp này, trên số phòng ban (trường DNO trong Nhân viên, DNUMBER trong bảng Phòng ban).
LEFT JOIN
s cho phép bạn kết hợp hai bảng khi bạn có bản ghi trong bảng đầu tiên nhưng có thể không có bản ghi trong bảng thứ hai. Ví dụ:giả sử bạn muốn có danh sách tất cả nhân viên, cộng với bất kỳ người phụ thuộc nào:
SELECT EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_first, DEPENDENT.LNAME as dependent_last
FROM
EMPLOYEE LEFT JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN
Vấn đề ở đây là nếu một nhân viên không có người phụ thuộc, thì bản ghi của họ sẽ không hiển thị - bởi vì không có bản ghi nào phù hợp trong bảng PHỤ THUỘC.
Vì vậy, bạn sử dụng một left phép kết hợp giữ tất cả dữ liệu ở "bên trái" (tức là bảng đầu tiên) và lấy bất kỳ dữ liệu phù hợp nào ở "bên phải" (bảng thứ hai):
SELECT EMPLOYEE.FNAME as employee_first, EMPLOYEE.LNAME as employee_last, DEPENDENT.FNAME as dependent_first, DEPENDENT.LNAME as dependent_last
FROM
EMPLOYEE LEFT JOIN DEPENDENT ON EMPLOYEE.SSN=DEPENDENT.ESSN
Bây giờ chúng tôi nhận được tất cả của hồ sơ nhân viên. Nếu không có (các) người phụ thuộc phù hợp cho một nhân viên nhất định, thì dependent_first
và dependent_last
các trường sẽ trống.