Trong hướng dẫn này, bạn sẽ tìm hiểu cách sử dụng mệnh đề CROSS JOIN
trong SQL Server để truy vấn dữ liệu từ hai hoặc nhiều bảng không liên quan.
Phần sau đây minh họa cú pháp của CROSS JOIN
trong SQL Server để truy vấn dữ liệu từ hai bảng:
SELECT
select_list
FROM
T1
CROSS JOIN T2;
Mệnh đề CROSS JOIN
sẽ nối mỗi bản ghi từ bảng đầu tiên (T1) với mỗi bản ghi từ bảng thứ hai (T2). Nói cách khác CROSS JOIN
trả về tích Đề Các các bản ghi từ cả hai bảng.
Không giống như mệnh đề INNER JOIN
, LEFT JOIN
, RIGHT JOIN
hay FULL OUTER JOIN
. CROSS JOIN
không thiết lập mối quan hệ giữa các bảng được join.
Giả sử bảng T1 chứa ba bản ghi 1, 2 và 3 và bảng T2 chứa ba bản ghi A, B và C.
Mệnh đề CROSS JOIN
lấy một bản ghi từ bảng đầu tiên (T1) và sau đó tạo một bản ghi mới cho mỗi bản ghi trong bảng thứ hai (T2). Sau đó, nó làm tương tự cho bản ghi tiếp theo trong bảng đầu tiên (T1), v.v.
Trong hình minh họa này, CROSS JOIN
tạo ra tổng cộng chín bản ghi. Nói chung, nếu bảng đầu tiên có n
bản ghi và bảng thứ hai có m
bản ghi, CROSS JOIN
sẽ tạo ra n * m
bản ghi.
Câu lệnh sau đây trả về một tập kết quả là sự kết hợp của tất cả các sản phẩm và cửa hàng. Tập kết quả có thể được sử dụng cho thủ tục kiểm kê trong thời gian đóng cửa cuối tháng và cuối năm:
SELECT
product_id,
product_name,
store_id,
0 AS quantity
FROM
production.products
CROSS JOIN sales.stores
ORDER BY
product_name,
store_id;
Đây là kết quả:
Câu lệnh sau đây tìm kiếm các sản phẩm không có doanh số trên các cửa hàng:
SELECT
s.store_id,
p.product_id,
ISNULL(sales, 0) sales
FROM
sales.stores s
CROSS JOIN production.products p
LEFT JOIN (
SELECT
s.store_id,
p.product_id,
SUM (quantity * i.list_price) sales
FROM
sales.orders o
INNER JOIN sales.order_items i ON i.order_id = o.order_id
INNER JOIN sales.stores s ON s.store_id = o.store_id
INNER JOIN production.products p ON p.product_id = i.product_id
GROUP BY
s.store_id,
p.product_id
) c ON c.store_id = s.store_id
AND c.product_id = p.product_id
WHERE
sales IS NULL
ORDER BY
product_id,
store_id;
Đây là kết quả:
Trong hướng dẫn này, bạn đã học cách sử dụng CROSS JOIN trong SQL Server để tạo tích Đề Các từ các bảng đã join.
Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Trong hướng dẫn này, bạn sẽ tìm hiểu về GUID trong SQL Server và cách sử dụng hàm NEWID() để tạo giá trị GUID.
Trong hướng dẫn này, bạn sẽ học cách sử dụng kiểu dữ liệu DATETIMEOFFSET trong SQL Server để thao tác datetime với múi giờ.
Trong hướng dẫn này, bạn sẽ học cách lưu trữ thời gian trong ngày trong cơ sở dữ liệu bằng cách sử dụng kiểu dữ liệu TIME trong SQL Server.
Trong hướng dẫn này, bạn sẽ học cách sử dụng kiểu dữ liệu DATE trong SQL Server để lưu trữ dữ liệu ngày tháng trong một bảng.