LEFT JOIN trong SQL

Thứ bảy - 01/07/2023 02:12

LEFT JOIN trong SQL là một lệnh hữu ích khi lập trình. Dưới đây là những cách dùng 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.

LEFT JOIN trả về tất cả các bản ghi từ bảng bên trái và các bản ghi phù hợp từ bảng bên phải.

 

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ả:

Lệnh LEFT JOIN trong SQL

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;

Kết quả dùng LEFT JOIN với alias

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.

 

Nguồn tin: Quantrimang.com

Tổng số điểm của bài viết là: 0 trong 0 đánh giá

  Ý kiến bạn đọc

THỐNG KÊ TRUY CẬP
  • Đang truy cập22
  • Máy chủ tìm kiếm3
  • Khách viếng thăm19
  • Hôm nay8,799
  • Tháng hiện tại74,419
  • Tổng lượt truy cập8,859,545
QUẢNG CÁO
Phan Thanh Phú
Quảng cáo 2
Liên kết site
Đăng nhập Thành viên
Hãy đăng nhập thành viên để trải nghiệm đầy đủ các tiện ích trên site
Thăm dò ý kiến

Bạn thấy Website cần cải tiến những gì?

Lịch Âm dương
Máy tính
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây