PostgreSQL LEFT JOIN

Giới thiệu về PostgreSQL LEFT JOIN

PostgreSQL là một trong những hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất hiện nay, với nhiều tính năng mạnh mẽ và linh hoạt. Một trong những công cụ quan trọng trong PostgreSQL (và các hệ quản trị cơ sở dữ liệu khác) là khả năng thực hiện các phép nối (join) giữa các bảng. Trong số các loại phép nối, LEFT JOIN (hay còn gọi là LEFT OUTER JOIN) là một trong những phép nối phổ biến nhất.

Định nghĩa LEFT JOIN

LEFT JOIN là phép nối giữa hai hoặc nhiều bảng trong đó tất cả các bản ghi từ bảng bên trái (bảng đầu tiên) được chọn, và các bản ghi từ bảng bên phải (bảng thứ hai) chỉ được chọn nếu có sự khớp với bảng bên trái. Nếu không có sự khớp, các trường từ bảng bên phải sẽ có giá trị NULL.

Cú pháp của LEFT JOIN

Cú pháp cơ bản để thực hiện LEFT JOIN trong PostgreSQL được viết như sau:

SELECT cột1, cột2, ...
FROM bảng1
LEFT JOIN bảng2
ON điều_khoản_kết_nối;

Trong đó:

  • SELECT: Chỉ định các cột mà bạn muốn lấy dữ liệu.
  • bảng1: Bảng bên trái trong phép nối.
  • bảng2: Bảng bên phải trong phép nối.
  • ON: Điều kiện để xác định cách các bản ghi trong bảng sẽ được nối với nhau.

Ví dụ về LEFT JOIN

Giả sử chúng ta có hai bảng: customers (khách hàng) và orders (đơn hàng). Bảng customers lưu thông tin về khách hàng, và bảng orders lưu thông tin về các đơn hàng mà khách hàng đã đặt.

Bảng customers:
+----+----------------+
| id | name           |
+----+----------------+
| 1  | Alice          |
| 2  | Bob            |
| 3  | Charlie        |
+----+----------------+

Bảng orders:
+----+------------+--------+
| id | customer_id| amount |
+----+------------+--------+
| 1  | 1          | 100    |
| 2  | 1          | 150    |
| 3  | 2          | 200    |
+----+------------+--------+

Nếu bạn muốn lấy danh sách tất cả khách hàng và đơn hàng của họ (nếu có), bạn có thể sử dụng câu lệnh LEFT JOIN như sau:

SELECT customers.name, orders.amount
FROM customers
LEFT JOIN orders
ON customers.id = orders.customer_id;

Kết quả của truy vấn trên sẽ là:

+---------+--------+
| name    | amount |
+---------+--------+
| Alice   | 100    |
| Alice   | 150    |
| Bob     | 200    |
| Charlie | NULL   |
+---------+--------+

Trong kết quả này, bạn có thể thấy rằng Charlie không có đơn hàng nào, vì vậy giá trị lượng tiền (amount) sẽ là NULL. Điều này cho thấy rằng LEFT JOIN cho phép bạn thấy tất cả các bản ghi từ bảng bên trái ngay cả khi không có bản ghi tương ứng từ bảng bên phải.

Kết luận

LEFT JOIN là một công cụ cực kỳ hữu ích khi làm việc với dữ liệu trong PostgreSQL. Nó cho phép bạn lấy tất cả thông tin từ bảng bên trái và kết hợp với thông tin từ bảng bên phải, bất kể có sự khớp hay không. Hiểu và sử dụng LEFT JOIN sẽ giúp bạn khai thác tối đa khả năng của cơ sở dữ liệu trong các ứng dụng thực tiễn.