Học SQL cơ bản – Các phép JOIN trong SQL Server

Phép kết bảng JOIN trong SQL Server là gì ?

Phép join (hay gọi là phép kết bảng) trong SQL Server là cho phép truy xuất dữ liệu từ hai hoặc nhiều bảng liên quan thành một nhóm kết quả ý nghĩa, thông thường kết qua các liên kết khóa ngoại. Một cơ sở dữ liệu thường sẽ có rất nhiều table, view cho nên khi truy vấn chúng ta phải sử dụng phép kết JOIN để lấy thông tin từ nhiều table, view để có tập kết quả mong muốn.

Dưới đây là 4 loại JOIN cơ bản trong SQL Server:

INNER JOIN – hay còn gọi là hình thức kết nối đơn giản
LEFT OUTER JOIN – hay LEFT JOIN
RIGHT OUTER JOIN – hay RIGHT JOIN
FULL OUTER JOIN – hay FULL JOIN
Ngoài ra, còn có các phép JOIN khác ít gặp hơn, như: SELF JOIN, FULL JOIN.

INNER JOIN là gì ?

INNER JOIN là loại kết nối phổ biến nhất, trả về tất cả các hàng từ các bảng khi điều kiện kết nối được đáp ứng, hay còn gọi là phép kết bằng.

SELECT E.EmployeeID, E.FirtName, E.LastName, D.DepartmentName
FROM Employee AS E
INNER JOIN Department AS D ON E.DepartmentID = D.DepartmentID

LEFT JOIN là gì ?

LEFT JOIN trong SQL Server là kiểu JOIN trả về tất cả các bản ghi từ table bên trái (table A) và các bản ghi phù hợp từ table bên phải (table B). Mệnh đề ON là điều kiện kết giữa 2 table, thường là còn gọi là key JOIN. Nếu mệnh đề ON không khớp với bản ghi nào trong table bên phải thì LEFT JOIN sẽ vẫn trả về một hàng trong kết quả, nhưng giá trị là NULL trong mỗi cột từ table bên phải.

SELECT E.EmployeeID, E.FirtName, E.LastName, D.DepartmentName
FROM Employee AS E
LEFT JOIN Department AS D ON E.DepartmentID = D.DepartmentID

FULL JOIN là gì ?

FULL JOIN trong SQL Server trả về tất cả bản ghi ở table trái và table phải kết hợp lại. Kiểu FULL JOIN này là kết hợp kết quả của cả hai loại LEFT và RIGHT JOIN. Table được kết hợp sẽ chứa tất cả bản ghi từ cả hai table và điền vào đó giá trị NULL cho các giá trị không khớp nhau.

SELECT E.EmployeeID, E.FirtName, E.LastName, D.DepartmentName
FROM Employee AS E
FULL JOIN Department AS D ON E.DepartmentID = D.DepartmentID

SELF JOIN là gì ?

SELF JOIN trong SQL Server được sử dụng để thực hiện phép Join trên cùng một table bằng cách nối một table với chính nó, coi như đó là hai table và thay tên tạm thời ít nhất một table.

-- Danh sách các nhân viên và người quản lý họ
SELECT E.EmployeeID, E.FirtName, E.LastName, M.EmployeeID AS ManagerID, M.FirtName + M.LastName AS ManagerName
FROM Employee AS E
JOIN Employee AS M ON E.ManagerID = M.EmployeeID

CROSS JOIN là gì ?

CROSS JOIN được sử dụng để tạo kết hợp từng hàng của table đầu tiên với mỗi hàng của table thứ hai. Kiểu nối này còn được gọi là nối Descartes. Phép JOIN này thường ít sử dụng ở thực tế vì chúng chỉ sử dụng để nhân dữ liệu nhiều lên. Phép JOIN này không có mệnh đề kết “ON”.
Ví dụ: Table1 có 10 dòng, Table2 có 2 dòng thì kết quả phép CROSS JOIN sẽ có 20 dòng.

SELECT T1.[ColumnName_1], 
       T1.[ColumnName_2], 
       T2.[Column1]
FROM [Table1] AS T1
     CROSS JOIN [Table2] AS T2