SQL OUTER JOIN

Hiểu Về SQL OUTER JOIN

SQL (Structured Query Language) là ngôn ngữ tiêu chuẩn được sử dụng để quản lý và thao tác với cơ sở dữ liệu. Một trong những khía cạnh quan trọng của SQL là khả năng kết hợp dữ liệu từ nhiều bảng khác nhau. Trong số những cách kết hợp dữ liệu, OUTER JOIN là một khái niệm quan trọng giúp chúng ta truy vấn dữ liệu từ nhiều bảng theo cách cho phép chúng ta thu thập thông tin thậm chí khi một số giá trị không khớp nhau giữa các bảng.

Định Nghĩa OUTER JOIN

OUTER JOIN là một loại phép kết hợp (join) trong SQL cho phép bạn lấy dữ liệu từ hai hoặc nhiều bảng và bao gồm các bản ghi không khớp từ một hoặc cả hai bảng. Có ba loại OUTER JOIN cơ bản:

  • LEFT OUTER JOIN: Bao gồm tất cả các bản ghi từ bảng bên trái và các bản ghi khớp từ bảng bên phải. Nếu không có bản ghi khớp ở bảng bên phải, kết quả sẽ trả về NULL cho những cột thuộc bảng bên phải.
  • RIGHT OUTER JOIN: Ngược lại với LEFT OUTER JOIN, nó bao gồm tất cả các bản ghi từ bảng bên phải và các bản ghi khớp từ bảng bên trái. Nếu không có bản ghi khớp ở bảng bên trái, nó sẽ trả về NULL cho những cột thuộc bảng bên trái.
  • FULL OUTER JOIN: Bao gồm tất cả các bản ghi từ cả hai bảng. Nếu không có bản ghi khớp, nó sẽ trả về NULL cho các cột từ bảng không có bản ghi tương ứng.

Cú Pháp

Cú pháp sử dụng OUTER JOIN trong SQL như sau:

-- LEFT OUTER JOIN
SELECT columns
FROM table1
LEFT OUTER JOIN table2
ON table1.common_column = table2.common_column;

-- RIGHT OUTER JOIN
SELECT columns
FROM table1
RIGHT OUTER JOIN table2
ON table1.common_column = table2.common_column;

-- FULL OUTER JOIN
SELECT columns
FROM table1
FULL OUTER JOIN table2
ON table1.common_column = table2.common_column;

Ví Dụ Về OUTER JOIN

Giả sử chúng ta có hai bảng: CustomersOrders. Bảng Customers có chứa danh sách khách hàng và bảng Orders có chứa danh sách đơn đặt hàng mà khách hàng đã thực hiện.

Bảng Customers:

| CustomerID | CustomerName | Country   |
|------------|--------------|-----------|
| 1          | Alice        | USA       |
| 2          | Bob          | UK        |
| 3          | Charlie      | Canada    |

Bảng Orders:

| OrderID | CustomerID | Product    |
|---------|------------|------------|
| 101     | 1          | Book       |
| 102     | 1          | Pen        |
| 103     | 2          | Laptop     |

1. LEFT OUTER JOIN

Sử dụng LEFT OUTER JOIN để lấy tất cả khách hàng và đơn hàng của họ:

SELECT Customers.CustomerName, Orders.Product
FROM Customers
LEFT OUTER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;

Kết quả sẽ là:

| CustomerName | Product   |
|--------------|-----------|
| Alice        | Book      |
| Alice        | Pen       |
| Bob          | Laptop    |
| Charlie      | NULL      |

2. RIGHT OUTER JOIN

Sử dụng RIGHT OUTER JOIN để lấy tất cả đơn hàng và thông tin khách hàng nếu có:

SELECT Customers.CustomerName, Orders.Product
FROM Customers
RIGHT OUTER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;

Kết quả sẽ là:

| CustomerName | Product   |
|--------------|-----------|
| Alice        | Book      |
| Alice        | Pen       |
| Bob          | Laptop    |

3. FULL OUTER JOIN

Sử dụng FULL OUTER JOIN để lấy tất cả khách hàng và đơn hàng:

SELECT Customers.CustomerName, Orders.Product
FROM Customers
FULL OUTER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;

Kết quả sẽ là:

| CustomerName | Product   |
|--------------|-----------|
| Alice        | Book      |
| Alice        | Pen       |
| Bob          | Laptop    |
| Charlie      | NULL      |

Kết Luận

OUTER JOIN là một công cụ mạnh mẽ trong SQL cho phép bạn lấy dữ liệu từ nhiều bảng ngay cả khi không có sự trùng khớp giữa chúng. Việc hiểu rõ cách sử dụng OUTER JOIN sẽ giúp bạn quản lý và phân tích dữ liệu một cách hiệu quả hơn.