Using Non equijoins – Sử dụng Join Non equijoins Join không bằng

Trong SQL, một non-equijoin là một loại join trong đó các hàng từ hai bảng được kết hợp dựa trên một điều kiện không phải là dấu bằng (=). Các điều kiện này có thể bao gồm dấu lớn hơn (>), nhỏ hơn (<), lớn hơn hoặc bằng (>=), nhỏ hơn hoặc bằng (<=), hoặc các điều kiện khác như BETWEEN.

Non-equijoin thường được sử dụng khi bạn cần kết hợp các bảng dựa trên các khoảng giá trị hoặc các điều kiện khác không liên quan đến sự bằng nhau của các giá trị.

Using Non equijoins – Sử dụng Join Non equijoins Join không bằng

Ví dụ về Non-Equijoin

1. Sử dụng Non-Equijoin với BETWEEN

Giả sử bạn có hai bảng: Employees và SalaryGrades. Bảng Employees chứa thông tin về nhân viên và mức lương của họ, trong khi bảng SalaryGrades chứa thông tin về các bậc lương khác nhau và các khoảng lương tương ứng.

Bảng Employees:

employee_id employee_name salary
1 John 3500
2 Jane 4200
3 Jack 5500

Bảng SalaryGrades:

grade min_salary max_salary
A 3000 3999
B 4000 4999
C 5000 5999

Bạn muốn kết hợp các bảng này để xác định bậc lương của mỗi nhân viên. Bạn có thể sử dụng một non-equijoin với điều kiện BETWEEN như sau:

SELECT e.employee_id, e.employee_name, e.salary, s.grade
FROM Employees e
JOIN SalaryGrades s
ON e.salary BETWEEN s.min_salary AND s.max_salary;

Kết quả sẽ là:

employee_id employee_name salary grade
1 John 3500 A
2 Jane 4200 B
3 Jack 5500 C

2. Sử dụng Non-Equijoin với điều kiện khác

Giả sử bạn có hai bảng: Orders và Discounts. Bảng Orders chứa thông tin về các đơn hàng, và bảng Discounts chứa thông tin về các mức giảm giá dựa trên số lượng sản phẩm.

Bảng Orders:

order_id product_id quantity
1 101 5
2 102 15
3 103 25

Bảng Discounts:

discount_id min_quantity max_quantity discount_rate
1 1 10 5%
2 11 20 10%
3 21 30 15%

Bạn muốn kết hợp các bảng này để xác định mức giảm giá cho mỗi đơn hàng. Bạn có thể sử dụng một non-equijoin với điều kiện lớn hơn hoặc bằng và nhỏ hơn hoặc bằng như sau:

SELECT o.order_id, o.product_id, o.quantity, d.discount_rate
FROM Orders o
JOIN Discounts d
ON o.quantity >= d.min_quantity AND o.quantity <= d.max_quantity;

Kết quả sẽ là:

order_id product_id quantity discount_rate
1 101 5 5%
2 102 15 10%
3 103 25 15%

Túm lại

Non-equijoin cho phép bạn kết hợp các bảng dựa trên các điều kiện khác ngoài sự bằng nhau của các giá trị. Điều này rất hữu ích khi làm việc với các khoảng giá trị, mức giảm giá, hoặc các điều kiện phức tạp khác. Hiểu và sử dụng non-equijoin đúng cách giúp bạn thực hiện các truy vấn phức tạp và thu được dữ liệu chính xác và có ý nghĩa hơn từ cơ sở dữ liệu của mình.

 

Danh mục: SQL
0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận