LEFT JOIN trong SQL

LEFT JOIN trong SQL trả về tất cả các hàng từ bảng bên trái, ngay cả khi không có so khớp nào trong bảng bên phải. Nghĩa là, nếu mệnh đề ON so khớp với 0 bản ghi 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 với 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ị được so khớp từ bảng bên phải hoặc NULL trong trường hợp không có so khớp nào.

Cú pháp LEFT JOIN

Cú pháp cơ bản của LEFT JOIN trong SQL như sau:

SELECT bang1.cot1, bang2.cot2...
FROM bang1
LEFT JOIN bang2
ON bang1.field_chung = bang2.field_chung;

Ví dụ

Giả sử có hai bảng, bảng SINHVIEN có các bản ghi sau:

+----+---------+-----+-----------+--------+
| ID |  TEN    | TUOI|  KHOAHOC  | HOCPHI |
+----+---------+-----+-----------+---------+
|  1 | Hoang   |  21 | CNTT      | 4000000       |
|  2 | Viet    |  19 | DTVT      | 3000000     |
|  3 | Thanh   |  18 | KTDN      |  4000000      |
|  4 | Nhan    |  19 | CK        |   4500000   |
|  5 | Huong   |  20 | TCNH      |   5000000     |
+----+---------+-----+-----------+---------+

Bảng MUONSACH có các bản ghi sau:

+-----+---------------------+-------------+--------+
|STT  | NGAY                | SINHVIEN_ID | SOTIEN |
+-----+---------------------+-------------+--------+
| 102 | 2009-10-08 00:00:00 |           3 |   320 |
| 100 | 2009-10-08 00:00:00 |           3 |   250 |
| 101 | 2009-11-20 00:00:00 |           2 |   280 |
| 103 | 2008-05-20 00:00:00 |           4 |   290 |
+-----+---------------------+-------------+--------+

Bây giờ, chúng ta kết hợp hai bảng bởi sử dụng LEFT JOIN trong SQL như sau:

SQL> SELECT  ID, TEN, SOTIEN, NGAY
     FROM SINHVIEN
     LEFT JOIN MUONSACH
     ON SINHVIEN.ID = MUONSACH.SINHVIEN_ID;

Ví dụ trên sẽ cho kết quả:

+----+----------+--------+---------------------+
| ID | TEN     | SOTIEN | NGAY                |
+----+----------+--------+---------------------+
|  1 | Hoang   |   NULL | NULL                |
|  2 | Viet   |   280 | 2009-11-20 00:00:00 |
|  3 | Thanh  |   320 | 2009-10-08 00:00:00 |
|  3 | Thanh  |   250 | 2009-10-08 00:00:00 |
|  4 | Nhan |   290 | 2008-05-20 00:00:00 |
|  5 | Huong   |   NULL | NULL                |
+----+----------+--------+---------------------+

Bình luận