Trong hướng dẫn này, bạn sẽ tìm hiểu cách sử dụng mệnh đề INNER JOIN
trong SQL Server để truy vấn dữ liệu từ nhiều bảng.
INNER JOIN
là một trong những loại join được sử dụng phổ biến nhất trong SQL Server. Mệnh đề INNER JOIN
cho phép bạn truy vấn dữ liệu từ hai hoặc nhiều bảng liên quan.
Xem các bảng products
và bảng categories
sau:
Câu lệnh sau lấy thông tin sản phẩm từ bảng production.products
:
SELECT
product_name,
list_price,
category_id
FROM
production.products
ORDER BY
product_name DESC;
Đây là kết quả:
Truy vấn chỉ trả về một danh sách các id của loại sản phẩm, không phải tên loại sản phẩm. Để bao gồm tên danh mục trong tập kết quả, bạn sử dụng mệnh đề INNER JOIN
như sau:
SELECT
product_name,
category_name,
list_price
FROM
production.products p
INNER JOIN production.categories c
ON c.category_id = p.category_id
ORDER BY
product_name DESC;
Đây là kết quả:
Trong truy vấn này:
c
và p
là các bí danh bảng của bảng production.categories
và production.products
. Bằng cách này, khi bạn tham chiếu một cột trong các bảng này, bạn có thể sử dụng alias.column_name
thay vì sử dụng table_name.column_name
.
Ví dụ: truy vấn sử dụng c.category_id
thay vì production.categories.category_id
. Do đó, nó giúp bạn tiết kiệm thời gian và truy vấn dễ đọc hơn.
Đối với mỗi bản ghi trong bảng production.products
, mệnh đề INNER JOIN
khớp với mọi bản ghi trong bảng product.categories
dựa trên các giá trị của cột category_id
:
category_id
, mệnh đề INNER JOIN
tạo thành một bản ghi mới có các cột từ các bản ghi của bảng production.categories
và bảng production.products
theo các cột trong danh sách kết quả và thêm bản ghi mới này trong tập kết quả.production.products
không khớp với bản ghi từ bảng production.categories
, mệnh đề INNER JOIN
sẽ bỏ qua các bản ghi này và không thêm chúng trong tập kết quả.Sau đây minh họa cú pháp của mệnh đề INNER JOIN
trong SQL Server :
SELECT
c.id candidate_id,
c.fullname candidate_name,
e.id employee_id,
e.fullname employee_name
FROM
hr.candidates c
INNER JOIN hr.employees e
ON e.fullname = c.fullname;
Trong cú pháp này, truy vấn lấy dữ liệu từ cả hai bảng T1 và T2:
FROM
.INNER JOIN
và một biểu thức join. Chỉ các bản ghi có biểu thức join được đánh giá là TRUE
mới được đưa vào tập kết quả.Mệnh đề INNER JOIN
so sánh mỗi bản ghi của bảng T1 với bản ghi của bảng T2 để tìm tất cả các cặp bản ghi đáp ứng biểu thức join.
Nếu biểu thức join được đánh giá là TRUE
, giá trị các cột của các bản ghi khớp trong bảng T1 và T2 được kết hợp thành một bản ghi mới và được bao gồm trong tập kết quả.
Bảng dưới đây minh họa sự kết hợp bên trong của hai bảng T1 (1,2,3) và T2 (A, B, C). Kết quả bao gồm các bản ghi: (2, A) và (3, B) vì chúng có cùng mẫu.
Lưu ý: từ khóa INNER
là tùy chọn, bạn có thể bỏ qua nó như được trình bày trong truy vấn dưới đây.
SELECT
select_list
FROM
T1 JOIN T2 ON join_predicate;
Xem các bảng products
, categories
và brands
sau đây:
Câu lệnh sau sử dụng hai mệnh đề INNER JOIN
để truy vấn dữ liệu từ ba bảng:
SELECT
product_name,
category_name,
brand_name,
list_price
FROM
production.products p
INNER JOIN production.categories c ON c.category_id = p.category_id
INNER JOIN production.brands b ON b.brand_id = p.brand_id
ORDER BY
product_name DESC;
Đây là kết quả:
Trong hướng dẫn này, bạn đã học cách sử dụng mệnh đề INNER JOIN
trong SQL Server để truy vấn dữ liệu từ nhiều bảng.
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.