Bài viết này được đăng tại
freetuts.net
Bạn đang đọc: Lệnh Inner Join trong SQL Server – Freetuts
, không được copy dưới mọi hình thức.
Hiện có ba những JOIN link khóa ngoại đa phần như sau :
- Inner Join
- Left Join
- Right Join
Tuy nhiên trong bài tiên phong này ta chỉ khám phá Inner Join thôi nhé, hai loại còn lại sẽ được trình diễn ở những bài tiếp theo .
Tóm Tắt
1. Giới thiệu Inner Join trong SQL Server
Không chỉ SQL Server mà ở hầu hết những hệ quản trị CSDL quan hệ lúc bấy giờ thì Inner join được sử dụng nhiều nhất trong những loại Join, nó giúp ta link nhiều table với nhau trải qua ràng buộc khóa ngoại .Bài viết này được đăng tại [ không tính tiền tuts. net ]
Giả sử ta có hai table như sau :
Bảng products có một khóa ngoại liên kêt đến bảng categories: products.category_id = categories.category_id
.
Câu hỏi đặt ra là làm sao lấy được thông tin của mỗi sản phẩm và chuyên mục mà sản phẩm đó thuộc về. Nếu bạn nghĩ đến truy vấn hai bảng thì đó là phép tích đề cát, và đương nhiên kết quả sẽ không như mong đợi.
SELECT * FROM products, categories
Nó sẽ trả ra kết quả là cấp số nhân của tổng record của hai bảng. Ví dụ bảng products
có 10 sản phẩm, bảng categories
có 2 chuyên mục thì nó trả về tổng cộng 20 record (10 x 2 = 20).
Đây là dữ liệu không đúng, vì vậy ta sẽ phải sử dụng một phép tích khác, đó là phép Inner Join.
Cú pháp của Inner Join như sau :
SELECT select_list FROM T1 INNER JOIN T2 ON join_predicate;
Trong đó :
select_list
là danh sách các field bạn muốn chọn ở hai bảng.T1
vàT2
là hai table cần JOIN với nhau.INNER JOIN
là toán tử JOINON join_predicate
là điều kiện JOIN.
Như table trên thì ta sẽ viết câu truy vấn 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;
Hãy chú ý c.category_id = p.category_id
chính là điều kiện JOIN giữa hai bảng. Nó sẽ so sánh record giữa hai bảng nếu có giá trị category_id
trùng nhau thì sẽ chọn. Vì vậy kết quả sẽ chính xác hơn.
Kêt quả :
Hãy xem bức ảnh dưới đây để hiểu hơn lệnh Inner Join .
Giữa hai bảng chỉ có hai cặp trùng nhau đó là 2 - A
và 3 - B
.
Lưu ý rằng Inner Join là từ khóa khá đầy đủ, bạn hoàn toàn có thể rút gọn bằng cách viết JOIN mà thôi .
SELECT select_list FROM T1 JOIN T2 ON join_predicate;
SQL Server sẽ tự động hóa hiểu đây là loại INNER JOIN .
2. Ví dụ về Inner Join trong SQL Server
Bây giờ ta sẽ làm một ví dụ phức tạp hơn đó là mối liên hệ giữa ba bảng .
Hãy xem cấu trúc của ba bảng như sau :
Bảng products
sẽ có hai mối liên hệ. Mỗi sản phẩm sẽ thuộc một category
và thuộc một brand
.
Bây giờ có bài toán yêu cầu như sau: Hãy lấy danh sách sản phẩm kèm thông tin về chuyên mục và thương hiệu mà nó thuộc về.
Để làm bài này thì ta thực hiện phép JOIN giữa ba bảng với nhau, và bảng products
là bảng chính bởi nó có các khóa ngoại liên kết để hai bảng còn lại.
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à tác dụng trả về từ câu truy vấn này .
Trên là những thông tin cơ bản về phép Inner Join trong SQL Server. Hy vọng bạn hiểu bài, nếu có vướng mắc gì hãy phản hồi hoặc tham gia nhóm hỏi đáp freetuts để đăng câu hỏi nhé .
Source: https://final-blade.com
Category: Kiến thức Internet