NỐI TRÁI và PHẢI
NỐI TRÁI
A LEFT JOIN
, còn LEFT OUTER JOIN
được gọi là một , là một loại thao tác SQL duy trì tất cả các hàng từ bảng bên trái (hoặc đầu tiên) trong truy vấn, bất kể có một hàng khớp trong bảng bên phải (hoặc thứ hai).
Khi tìm thấy kết quả khớp, các cột từ bảng bên phải sẽ được điền cùng với các giá trị tương ứng. Tuy nhiên, nếu không có kết quả khớp nào, kết quả sẽ bao gồm giá trị null trong các cột có nguồn gốc từ bảng bên phải.
Kết nối này rất hữu ích khi bạn cần tạo một danh sách đầy đủ từ một bảng trong khi chắp thêm dữ liệu liên quan từ một bảng khác, ngay cả khi các mối quan hệ đó không đầy đủ hoặc không có.
SELECT customers.customer_name, orders.order_id
FROM sales.customers AS customers
LEFT JOIN sales.orders AS orders ON customers.customer_id = orders.customer_id;
Truy vấn SQL sử dụng truy xuất LEFT JOIN
tất cả khách hàng từ bảng sales.customers
, bao gồm những khách hàng không có đơn hàng khớp trong sales.orders
bảng. Mệnh ON
đề xác định rằng trường liên customer_id
kết hai bảng.
Đối với khách hàng đã đặt hàng, từ order_id
bảng sẽ orders
được hiển thị. Tuy nhiên, nếu khách hàng không có bất kỳ đơn hàng nào, kết quả vẫn bao gồm khách hàng, order_id
với cột hiển thị giá trị null.
NỐI PHẢI
A RIGHT JOIN
, còn RIGHT OUTER JOIN
được gọi là một , là một thao tác SQL đảm bảo tất cả các hàng từ bảng bên phải (hoặc thứ hai) được bao gồm trong kết quả, bất kể có một hàng khớp nhau trong bảng bên trái (hoặc đầu tiên).
Trong trường hợp không tìm thấy kết quả khớp, các cột từ bảng bên trái sẽ hiển thị các giá trị null.
Loại kết nối này thường được sử dụng để tập trung vào dữ liệu trong bảng bên phải, đồng thời chắp thêm thông tin từ bảng bên trái bất cứ khi nào mối quan hệ tồn tại.
SELECT customers.customer_name, orders.order_id
FROM sales.customers AS customers
RIGHT JOIN sales.orders AS orders ON customers.customer_id = orders.customer_id;
Truy vấn này truy xuất tất sales.orders
cả các hàng từ bảng, đảm bảo rằng mọi đơn hàng đều được đưa vào kết quả, ngay cả khi không có mục liên kết nào trong sales.customers
bảng.
Mệnh ON
đề xác định mối quan hệ giữa hai bảng thông qua customer_id
cột. Nếu một đơn hàng có một khách hàng tương ứng, customer_name
customer_name
cột sẽ được điền với các giá trị null được hiển thị cho các bản ghi không khớp.