SQL JOIN là một phép toán được sử dụng để kết hợp dữ liệu từ hai hoặc nhiều bảng dựa trên các cột chung. JOIN giúp bạn truy xuất dữ liệu từ nhiều bảng một cách hiệu quả và dễ dàng.
Các loại JOIN:
- INNER JOIN (hay JOIN):
- Trả về tất cả các bản ghi có giá trị khớp trong cả hai bảng.
- Ví dụ: Tìm kiếm tất cả khách hàng đã đặt hàng.
- LEFT JOIN (hay LEFT OUTER JOIN):
- Trả về tất cả các bản ghi từ bảng bên trái và các bản ghi khớp từ bảng bên phải.
- Ví dụ: Tìm kiếm tất cả khách hàng, bao gồm cả những khách hàng chưa đặt hàng.
- RIGHT JOIN (hay RIGHT OUTER JOIN):
- Trả về tất cả các bản ghi từ bảng bên phải và các bản ghi khớp từ bảng bên trái.
- Ví dụ: Tìm kiếm tất cả các sản phẩm đã được bán, bao gồm cả những sản phẩm chưa được bán.
- FULL JOIN (hay OUTER JOIN):
- Trả về tất cả các bản ghi từ cả hai bảng, bao gồm cả những bản ghi không khớp.
- Ví dụ: Tìm kiếm tất cả khách hàng và sản phẩm, bao gồm cả những khách hàng chưa đặt hàng và những sản phẩm chưa được bán.
- SELF JOIN:
- Là phép toán thực hiện join với chính nó, có sử dụng Alias để thực hiện đổi tên bảng như là join giữa hai bảng khác nhau.
Ví dụ về JOIN:
-- INNER JOIN SELECT * FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID; -- LEFT JOIN SELECT * FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID; -- RIGHT JOIN SELECT * FROM Customers RIGHT JOIN Orders ON Customers.CustomerID = Orders.CustomerID; -- FULL JOIN SELECT * FROM Customers FULL JOIN Orders ON Customers.CustomerID = Orders.CustomerID; -- SELF JOIN SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City FROM Customers A, Customers B WHERE A.CustomerID <> B.CustomerID AND A.City = B.City ORDER BY A.City;
Sự khác nhau giữa các loại JOIN:
(INNER) JOIN: Trả về các bản ghi có giá trị trùng khớp trong cả hai bảng
LEFT (OUTER) JOIN: Trả về tất cả các bản ghi từ bảng bên trái và các bản ghi khớp từ bảng bên phải
RIGHT (OUTER) JOIN: Trả về tất cả các bản ghi từ bảng bên phải và các bản ghi khớp từ bảng bên trái
FULL (OUTER) JOIN: Trả về tất cả các bản ghi khi có sự trùng khớp ở bảng bên trái hoặc bên phải (nếu có giá trị 2 bảng khớp nhau => lấy tất cả giá trị của 2 bảng hiển thị ra)
SELF JOIN: Là phép join chính nó thông thường