SQL JOIN và Cách Sử Dụng

SQL JOIN được sử dụng để truy vấn dữ liệu từ hai hoặc nhiều bảng dựa trên mối quan hệ giữa các cột trong các bảng đó.

JOIN và Khóa

Đôi khi, để có được kết quả đầy đủ, chúng ta cần lấy dữ liệu từ hai hoặc nhiều bảng. Khi đó, chúng ta cần thực hiện JOIN.

Các bảng trong cơ sở dữ liệu có thể liên kết với nhau thông qua khóa. Khóa chính (Primary Key) là một cột mà mỗi giá trị trong cột đó là duy nhất. Mục đích của việc này là liên kết dữ liệu giữa các bảng mà không cần phải lặp lại tất cả dữ liệu trong mỗi bảng.

Xem bảng "NhanVien":

Id_NV Ten Ho DiaChi ThanhPho
1 John Adams Oxford Street London
2 George Bush Fifth Avenue New York
3 Thomas Carter Changan Street Beijing

Lưu ý rằng cột "Id_NV" là khóa chính của bảng NhanVien. Điều này có nghĩa là không có hai dòng nào có cùng Id_NV. Ngay cả khi hai người có tên giống nhau, Id_NV vẫn có thể phân biệt họ.

Tiếp theo, xem bảng "DonHang":

Id_DH SoDon Id_NV
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

Lưu ý rằng cột "Id_DH" là khóa chính của bảng DonHang, và cột "Id_NV" trong bảng DonHang được sử dụng để tham chiếu đến người trong bảng NhanVien mà không cần sử dụng tên cụ thể của họ.

Cột "Id_NV" liên kết hai bảng này với nhau.

Truy vấn từ hai bảng

Chúng ta có thể truy vấn dữ liệu từ hai bảng bằng cách tham chiếu đến cả hai bảng:

Ai đã đặt hàng và họ đã đặt hàng gì?

SELECT NhanVien.Ho, NhanVien.Ten, DonHang.SoDon
FROM NhanVien, DonHang
WHERE NhanVien.Id_NV = DonHang.Id_NV 

Kết quả:

Họ Tên Số Đơn
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

SQL JOIN - Sử dụng JOIN

Ngoài cách trên, chúng ta cũng có thể sử dụng từ khóa JOIN để truy vấn dữ liệu từ hai bảng.

Nếu chúng ta muốn liệt kê tất cả đơn hàng của mọi người, có thể sử dụng câu lệnh SELECT sau:

SELECT NhanVien.Ho, NhanVien.Ten, DonHang.SoDon
FROM NhanVien

INNER JOIN DonHang

ON NhanVien.Id_NV = DonHang.Id_NV
ORDER BY NhanVien.Ho

Kết quả:

Họ Tên Số Đơn
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

Các loại SQL JOIN khác

Ngoài INNER JOIN (kết nối nội) mà chúng ta đã sử dụng trong ví dụ trên, còn có các loại kết nối khác.

Dưới đây là danh sách các loại JOIN mà bạn có thể sử dụng, cùng với sự khác biệt giữa chúng.

  • INNER JOIN: Tương đương với JOIN (mặc định). Trả về hàng nếu có ít nhất một khớp trong cả hai bảng.
  • LEFT JOIN: Trả về tất cả các hàng từ bảng bên trái, ngay cả khi không có khớp trong bảng bên phải.
  • RIGHT JOIN: Trả về tất cả các hàng từ bảng bên phải, ngay cả khi không có khớp trong bảng bên trái.
  • FULL JOIN: Trả về hàng nếu có khớp trong ít nhất một trong hai bảng.

Thẻ: sql JOIN INNER JOIN left join RIGHT JOIN

Đăng vào ngày 6 tháng 7 lúc 23:08