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. ...
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
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 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 | +----+----------+--------+---------------------+