LEFT JOIN trong SQL
LEFT JOIN trong SQL được dùng để làm gì? Nếu chưa biết, mời bạn cùng tìm hiểu cách dùng LEFT JOIN SQL nhé!
SQL Join giúp quản lý cơ sở dữ liệu quan hệ dễ dàng, nhờ các phép nối liên kết hai hoặc nhiều bảng thông qua các cột chung. Lệnh LEFT JOIN (hoặc LEFT OUTER JOIN) đưa mọi thứ tiến xa hơn một bước…
SQL là ngôn ngữ truy vấn vốn có liên quan đến cơ sở dữ liệu quan hệ. Lý do ngôn ngữ này phổ biến là vì cú pháp của nó tương đối dễ học, mở đường cho việc tạo và thao tác bảng dễ dàng, từ đó, các cơ sở dữ liệu liên kết các bảng này. Điểm mạnh của nó nằm ở khả năng trích xuất thông tin rất chính xác từ các cơ sở dữ liệu lớn.
Tuy nhiên, một trong những điểm mạnh của ngôn ngữ này nằm ở khả năng thiết lập các phép nối giữa nhiều bảng dữ liệu. Điều này có nghĩa là gì? Bằng cách kết hợp dữ liệu từ nhiều bảng, chúng ta có thể có được các tham chiếu chéo mà nhà khoa học dữ liệu đặc biệt quan tâm.
Do đó, phép nối là một thành phần thiết yếu của SQL.
Join được dùng để truy xuất các bản ghi từ 2 bản trở lên dựa trên mối quan hệ logic giữa chúng. Mối quan hệ này được xác định bằng điều kiện join. SQL có hai kiểu Join:
- Inner Join
- Outer Join
Hàm Left Join là một kiểu cả Join Outer, truy xuất toàn bộ bản ghi từ bảng đầu tiên và kết hợp chúng với những bản ghi trong bảng thứ hai. Trước tiên, chúng ta hãy cùng nhau tìm hiểu xem Outer Join là gì nhé!
Outer Join là gì?
Outer Join được dùng để nối nhiều bảng cơ sở dữ liệu thành một tập kết quả được kết hợp, bao gồm tất cả bản ghi, ngay cả khi chúng đáp ứng điều kiện Join. Các giá trị NULL được hiện dựa trên những bản ghi mà điều kiện join không đáp ứng.
Trườn hợp này chỉ xảy ra nếu bảng bên trái (hoặc bản đầu tiên có nhiều bản ghi hơn bảng bên phải (hoặc bảng thứ hai)…
Outer join có 3 kiểu:
- Left Join truy xuất toàn bộ bản ghi từ bảng đầu tiên.
- Right Join truy xuất toàn bộ bản ghi từ bảng thứ hai.
- Full Join truy xuất bản ghi từ cả hai bảng và điền các giá trị không phù hợp bằng Null.
LEFT JOIN trong SQL
LEFT JOIN trong SQL là kiểu JOIN trả về tất cả các bản ghi từ bảng bên trái (bảng 1) và các bản ghi phù hợp từ bảng bên phải (bảng 2). Nếu mệnh đề ON không khớp với bản ghi nào trong bảng 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ừ bảng bên phải.
Điều này nghĩa là LEFT JOIN trả về tất cả giá trị từ bảng bên trái, cộng với các giá trị phù hợp từ bảng bên phải hoặc NULL trong trường hợp không có giá trị phù hợp nào.
Cú pháp LEFT JOIN trong SQL
Cú pháp cơ bản của LEFT JOIN như sau:
SELECT cot1, cot2,... cotnFROM bang1LEFT JOIN bang2ON bang1.cot_chung = bang2.cot_chung;
Tham số:
- cot1, cot2,... cotn: tên các cột cần hiển thị ở kết quả truy vấn. Các cot được ngăn cách với nhau bằng dấu phẩy (,)
- bang1, bang2: tên các bảng để lấy dữ liệu khi truy vấn.
- cot_chung: thường là tên cột khóa ngoại tham chiếu từ bang1 đến cột định danh trong bang2 hoặc ngược lại.
Ví dụ về LEFT JOIN trong SQL
Giả sử hai bảng là NHANVIEN và TIENTHUONG có các bản ghi sau:
Bảng 1: NHANVIEN
+----+----------+-----+-----------+----------+
| ID | TEN |TUOI | DIACHI | LUONG |
+----+----------+-----+-----------+----------+
| 1 | Thanh | 32 | Haiphong | 2000.00 |
| 2 | Loan | 25 | Hanoi | 1500.00 |
| 3 | Nga | 23 | Hanam | 2000.00 |
| 4 | Manh | 25 | Hue | 6500.00 |
| 5 | Huy | 27 | Hatinh | 8500.00 |
| 6 | Cao | 22 | HCM | 4500.00 |
| 7 | Lam | 24 | Hanoi | 10000.00 |
+----+----------+-----+-----------+----------+
Bảng 2: TIENTHUONG
+-----+---------------------+-------------+--------+
|TT_ID| NGAY | NHANVIEN_ID | SOTIEN |
+-----+---------------------+-------------+--------+
| 102 | 2019-01-08 00:00:00 | 3 | 3000 |
| 100 | 2019-01-08 00:00:00 | 3 | 1500 |
| 101 | 2019-02-20 00:00:00 | 2 | 1560 |
| 103 | 2018-12-20 00:00:00 | 4 | 2060 |
+-----+---------------------+-------------+--------+
Bây giờ, chúng ta hãy join hai bảng này bằng cách sử dụng LEFT JOIN như sau:
SQL> SELECT ID, TEN, SOTIEN, NGAY FROM NHANVIEN LEFT JOIN TIENTHUONG ON NHANVIEN.ID = TIENTHUONG.NHANVIEN_ID;
Kết quả trả về là:
+----+----------+--------+---------------------+
| ID | TEN | SOTIEN | NGAY |
+----+----------+--------+---------------------+
| 1 | Thanh | NULL | NULL |
| 2 | Loan | 1560 | 2019-02-20 00:00:00 |
| 3 | Nga | 3000 | 2019-01-08 00:00:00 |
| 3 | Nga | 1500 | 2019-01-08 00:00:00 |
| 4 | Manh | 2060 | 2018-12-20 00:00:00 |
| 5 | Huy | NULL | NULL |
| 6 | Cao | NULL | NULL |
| 7 | Lam | NULL | NULL |
+----+----------+--------+---------------------+
LEFT JOIN với mệnh đề WHERE
Lệnh LEFT JOIN SQL có thể dùng kèm với mệnh đề WHERE. Ví dụ:
SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
LEFT JOIN Orders
ON Customers.customer_id = Orders.customer
WHERE Orders.amount >= 500;
Đây là lệnh SQL nối hai bảng và chọn hàng tại vị trí amount lớn hơn hoặc bằng 500.
Xét ví dụ bên dưới, truy vấn này đã bổ sung thêm mệnh đề WHERE để chỉ trả về kết quả tại vị trí cột “location” trong bảng bộ phận (tương đương Bangalore). Hành động này sẽ lọc kết quả chỉ hiện nhân viên thuộc về bộ phận ở Bangalore, và các phòng ban không có nhân viên sẽ không xuất hiện trong kết quả.
Truy vấn:
SELECT e.EmpID, e.Name, d.department_name,
d.department_head, d.location
FROM Emp e
LEFT JOIN department d ON e.department_id
= d.department_id
WHERE d.location = 'Bangalore';
Kết quả:
LEFT JOIN với AS Alias
Chúng ta có thể dùng các bí danh AS bên trong LEFT JOIN để tạo đoạn văn ngắn và gọn gàng. Ví dụ:
SELECT C.cat_name, P.prod_title
FROM Categories1 AS C
LEFT JOIN Products AS P
ON C.cat_id= P.cat_id;
Đây là lệnh SQL chọn các hàng thông thường giữa bảng Category và Products.
LEFT JOIN Vs LEFT OUTER JOIN
Chúng ta cũng có thể dùng LEFT OUTER JOIN thay cho LEFT JOIN. Về cơ bản, cả hai mệnh đề này đều giống nhau. Điều đó có nghĩa:
SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
LEFT JOIN Orders
ON Customers.customer_id = Orders.customer;
Tương đương với:
SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
LEFT OUTER JOIN Orders
ON Customers.customer_id = Orders.customer;
Giờ trong truy vấn này, bạn sẽ dùng các alias “e” cho bảng Emp và “d” cho bảng bộ phận. Sau đó, dùng lệnh SELECT tham chiếu những bí danh này cho từng cột được trả về, làm truy vấn trở nên dễ đọc và dễ nhập hơn. Các alias đặc biệt hữu ích khi bạn đang làm việc với bảng có tên dài hoặc phức tạp bởi chúng có thẻ đơn giản hóa code và khiến nó dễ hiểu hơn.
SELECT e.EmpID, e.Name, d.department_name,
d.department_head, d.location
FROM Emp e
LEFT JOIN department d ON
e.department_id = d.department_id;
Nhìn chung, LEFT JOIN SQL là một lệnh vô cùng hữu ích khi lập trình mà nhất định bạn phải biết. Hi vọng bài viết giúp bạn hiểu rõ hơn về LEFT JOIN trong SQL.
Xem thêm các kiểu JOIN:
- INNER JOIN - Trả về các bản ghi có giá trị phù hợp giữa hai bảng.
- RIGHT JOIN - Trả về tất cả các bản ghi từ bảng bên phải và các bản ghi phù hợp từ bảng bên trái.
- FULL JOIN - Trả về tất cả bản ghi ở bảng trái và bảng phải kết hợp lại.
- SELF JOIN - Kết hợp một bảng với chính nó như khi coi bảng đó là hai bảng, thay tên tạm thời ít nhất một bảng trong lệnh SQL.
- CARTESIAN JOIN - Trả về tích Đề-các của các tập hợp bản ghi từ hai hoặc nhiều bảng đã được kết hợp.
Bạn nên đọc
Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:


Cũ vẫn chất
-
Hàm COUNTIFS, cách dùng hàm đếm ô theo nhiều điều kiện trong Excel
Hôm qua -
4 cách kiểm tra lịch sử giao dịch BIDV trên điện thoại, máy tính
Hôm qua -
Cách dùng Terabox lưu trữ với 1TB miễn phí
Hôm qua 5 -
Sạc không dây là gì? Nó nhanh hơn hay chậm hơn sạc dây? Danh sách smartphone Android hỗ trợ sạc không dây
Hôm qua -
Cách sửa lỗi không thấy bộ điều hợp mạng trên Windows 10
Hôm qua -
Các cách làm, tùy chỉnh trong bài sẽ giúp tăng tốc Windows 10 của bạn "nhanh như gió"
Hôm qua 6 -
Cách sao chép hoặc tạo bản sao toàn bộ trang tính trong Google Sheets
Hôm qua -
Cách chặn từ khóa và Hashtag trên Twitter
Hôm qua -
Valentine đen là gì? Valentine đen là ngày nào?
Hôm qua -
Dynamic System Updates là gì?
Hôm qua