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_idemployee_namesalary
1John3500
2Jane4200
3Jack5500

Bảng SalaryGrades:

grademin_salarymax_salary
A30003999
B40004999
C50005999

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_idemployee_namesalarygrade
1John3500A
2Jane4200B
3Jack5500C

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_idproduct_idquantity
11015
210215
310325

Bảng Discounts:

discount_idmin_quantitymax_quantitydiscount_rate
11105%
2112010%
3213015%

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_idproduct_idquantitydiscount_rate
110155%
21021510%
31032515%

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.

 

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