Rate this post

SQL OUTER JOIN

Trong SQL bên ngoài JOIN, tất cả nội right của cả hai bảng được tích hợp với nhau hoặc chúng có khớp hoặc không.

Nếu bạn lấy một ví dụ về bảng nhân viên

Nối ngoài gồm hai loại:

1. Nối ngoài bên trái (còn được gọi là liên kết bên trái): liên kết này trả về tất cả các hàng từ bảng bên trái kết hợp với các hàng phù hợp của bảng bên phải. Nếu bạn không có kết quả phù hợp nào trong bảng bên phải, nó sẽ trả về giá trị NULL.

2. Nối ngoài bên phải (còn được gọi là nối phải): phép nối này trả về tất cả các hàng từ bảng bên phải được kết hợp với các hàng phù hợp của bảng bên trái. Nếu bạn không có cột nào khớp trong bảng bên trái. Nó trả về giá trị rỗng.

Các bài viết liên quan:

Biểu đồ này cho thấy các loại liên kết khác nhau:

SQL JOIN TRÁI

Phép nối bên trái trong SQL trả về tất cả các giá trị từ bảng bên trái và nó cũng bao gồm các giá trị phù hợp từ bảng bên phải, nếu không có giá trị nối nào phù hợp, nó trả về NULL.

CÚ PHÁP CƠ BẢN ĐỂ JOIN TRÁI:

Chúng ta hãy lấy hai bảng trong ví dụ này để trình bày chi tiết tất cả những thứ:

BẢNG Customer:

IDNAMEAGESALARY
1ARYAN5156000
2AROHI2125000
3VINEET2431000
4AJEET2332000
5RAVI2342000

BẢNG Order:

O_IDDATECUSTOMER_IDAMOUNT
00120-01-201223000
00212-02-201222000
00322-03-201234000
00411-04-201245000

JOIN hai bảng này với LEFT JOIN:

Điều này sẽ tạo ra kết quả sau:

IDNAMEAMOUNTDATE
1ARYANNULLNULL
2AROHI300020-01-2012
2AROHI200012-02-2012
3VINEET400022-03-2012
4AJEET500011-04-2012
5RAVINULLNULL

SQL JOIN PHẢI

Phép nối bên phải trong SQL trả về tất cả các giá trị từ các hàng của bảng bên phải. Nó cũng bao gồm các giá trị được so khớp từ bảng bên trái nhưng nếu không có sự phù hợp nào trong cả hai bảng, nó sẽ trả về NULL.

Cú pháp cơ bản để join right:

chúng ta hãy lấy một ví dụ với 2 bảng table1 là CUSTOMERS table và table2 là ORDERS table.

BẢNG Customer:

IDNAMEAGESALARY
1ARYAN5156000
2AROHI2125000
3VINEET2431000
4AJEET2332000
5RAVI2342000

BẢNG Order:

DATEO_IDCUSTOMER_IDAMOUNT
20-01-201200123000
12-02-201200222000
22-03-201200334000
11-04-201200445000

Ở đây chúng ta sẽ nối hai bảng này với SQL RIGHT JOIN:

IDNAMEAMOUNTDATE
2AROHI300020-01-2012
2AROHI200012-02-2012
3VINEET400022-03-2012
4AJEET500011-04-2012

SQL FULL Join

Phép nối full trong SQL là kết quả của sự kết hợp của cả phép nối bên ngoài bên trái và bên phải và các bảng nối có tất cả các bản ghi từ cả hai bảng. Nó đặt NULL vào vị trí của các kết quả không tìm thấy.

Join bên ngoài full SQL và Join SQL giống nhau. nói chung nó được gọi là SQL FULL JOIN.

Join bên ngoài full SQL:

Join bên ngoài full SQL là gì?

Phép nối bên ngoài full trong SQL được sử dụng để kết hợp kết quả của cả phép nối bên ngoài bên trái và bên phải và trả về tất cả các hàng (không quan tâm đến kết quả khớp hoặc chưa khớp của nó) từ cả hai bảng Join.

Cú pháp cho phép nối bên ngoài full:

Lưu ý: ở đây table1 và table2 là tên của các bảng Join Join và column_name là cột của các bảng Join.

Chúng ta hãy lấy hai bảng để chứng minh sự Join bên ngoài full:

table_A

AM
1m
2n
4o

bảng_B

AN
2p
3q
5r

Bảng kết quả

AMAN
2n2p
1m
4o
3q
5r

Bởi vì đây là một phép nối bên ngoài full nên tất cả các hàng (cả phù hợp và không khớp) từ cả hai bảng đều được đưa vào đầu ra. Ở đây chỉ có một hàng đầu ra hiển thị giá trị trong tất cả các cột vì chỉ có một kết quả khớp giữa table_A và table_B.

Join chéo trong SQL

  • Phép toán nối trong SQL được sử dụng để kết hợp nhiều bảng với nhau thành một bảng duy nhất.
  • Nếu chúng ta sử dụng phép nối chéo để kết hợp hai bảng khác nhau, thì chúng ta sẽ nhận được tích Descartes của các tập hợp hàng từ bảng đã nối. Khi mỗi hàng của bảng đầu tiên được kết hợp với mỗi hàng từ bảng thứ hai, nó được gọi là phép nối Đề-các hoặc phép nối chéo.
  • Sau khi thực hiện thao tác nối chéo, tổng số hàng có trong bảng cuối cùng sẽ bằng tích của số hàng có trong bảng 1 và số hàng có trong bảng 2.
  • Nếu có hai bản ghi trong bảng 1 và ba bản ghi trong bảng 2, thì sau khi thực hiện thao tác nối chéo, chúng ta sẽ nhận được sáu bản ghi trong bảng cuối cùng.
  • Chúng ta hãy xem cú pháp viết một truy vấn để thực hiện thao tác nối chéo trong SQL.

Bây giờ chúng ta hãy xem đi sâu hơn về phép nối chéo trong SQL với sự trợ giúp của các ví dụ. Tất cả các truy vấn trong các ví dụ sẽ được viết bằng cơ sở dữ liệu MySQL.

Hãy xem xét chúng ta có các bảng sau với dữ liệu đã cho:

Bảng 1: MatchScore

PlayerDepartment_idGoals
Franklin12
Alan13
Priyanka22
Rajesh35

Bảng 2: Departments

Department_idDepartment_name
1IT
2HR
3Marketing

Bảng 3: employee

EmployeeIDEmployee_NameEmployee_Salary
1Arun Tiwari50000
2Sachin Rathi64000
3Harshal Pathak48000
4Arjun Kuwar46000
5Sarthak Gada62000

Bảng 4: department

DepartmentIDDepartment_NameEmployee_ID
1Production1
2Sales3
3Marketing4
4Accounts5

Bảng 5: loan

LoanIDBranchAmount
1B115000
2B210000
3B320000
4B4100000

Bảng 6: borrower

CustIDCustNameLoanID
1Sonakshi Dixit1
2Shital Garg4
3Swara Joshi5
4Isha Deshmukh2

Bảng 7: customer

Customer_IDNameAgeSalary
1Aryan Jain5156000
2Arohi Dixit2125000
3Vineet Garg2431000

Bảng 8: orders

Order_IDOrder_DateCutomer_IDAmount
12012-01-2023000
22012-05-1822000
32012-06-2834000

Ví dụ 1:

Viết truy vấn để thực hiện thao tác nối chéo coi bảng MatchScore là bảng bên trái và bảng Phòng ban là bảng bên phải.

Truy vấn:

Chúng tôi đã sử dụng lệnh SELECT với dấu hoa thị để truy xuất tất cả các cột có trong bảng MatchScore và Department. Sau đó, chúng tôi đã sử dụng từ khóa CROSS JOIN để thực hiện thao tác kết hợp chéo trên bảng MatchScore và các Phòng ban. Vì có 4 bản ghi trong MatchScore và 3 bản ghi trong bảng Cục nên sau khi thực hiện thao tác nối chéo, chúng ta sẽ nhận được 12 hàng.

Sau khi thực hiện truy vấn này, bạn sẽ tìm thấy kết quả sau:

PlayerDepartment_idGoalsDepatment_idDepartment_name
Franklin121IT
Alan131IT
Priyanka221IT
Rajesh351IT
Franklin122HR
Alan132HR
Priyanka222HR
Rajesh352HR
Franklin123Marketing
Alan133Marketing
Priyanka223Marketing
Rajesh353Marketing

Mỗi hàng từ bảng MatchScore được kết hợp với mỗi hàng của bảng Cục. Vì có bốn bản ghi trong MatchScore và ba bản ghi trong bảng Cục, chúng tôi có 12 hàng trong bảng cuối cùng sau khi thực hiện thao tác nối chéo.

Ví dụ 2:

Viết truy vấn để thực hiện thao tác nối chéo coi bảng nhân viên là bảng bên trái và bảng bộ phận là bảng bên phải.

Truy vấn:

Chúng tôi đã sử dụng lệnh SELECT với dấu sao để truy xuất tất cả các cột có trong bảng nhân viên và phòng ban. Sau đó, chúng tôi đã sử dụng từ khóa CROSS JOIN để thực hiện thao tác nối chéo trên bảng nhân viên và bộ phận. Vì có năm bản ghi trong nhân viên và bốn bản ghi trong bảng bộ phận, sau khi thực hiện thao tác nối chéo, chúng ta sẽ nhận được 20 hàng.

Sau khi thực hiện truy vấn này, bạn sẽ tìm thấy kết quả sau:

EmployeeIDEmployee_NameEmployee_SalaryDepartmentIDDepartment_NameEmployee_ID
1Arun Tiwari500001Production1
1Arun Tiwari500002Sales3
1Arun Tiwari500003Marketing4
1Arun Tiwari500004Accounts5
2Sachin Rathi640001Production1
2Sachin Rathi640002Sales3
2Sachin Rathi640003Marketing4
2Sachin Rathi640004Accounts5
3Harshal Pathak480001Production1
3Harshal Pathak480002Sales3
3Harshal Pathak480003Marketing4
3Harshal Pathak480004Accounts5
4Arjun Kuwar460001Production1
4Arjun Kuwar460002Sales3
4Arjun Kuwar460003Marketing4
4Arjun Kuwar460004Accounts5
5Sarthak Gada620001Production1
5Sarthak Gada620002Sales3
5Sarthak Gada620003Marketing4
5Sarthak Gada620004Accounts5

Mỗi hàng từ bảng nhân viên được kết hợp với mỗi hàng của bảng bộ phận. Vì có năm bản ghi trong bảng nhân viên và bốn bản ghi trong bảng bộ phận, chúng tôi có 20 hàng trong bảng cuối cùng sau khi thực hiện thao tác nối chéo.

Ví dụ 3:

Viết truy vấn để thực hiện thao tác nối chéo coi bảng cho vay là bảng bên trái và bảng bên vay là bảng bên phải.

Truy vấn:

Chúng tôi đã sử dụng lệnh SELECT với dấu hoa thị để truy xuất tất cả các cột có trong khoản vay và bảng người đi vay. Sau đó, chúng tôi đã sử dụng từ khóa CROSS JOIN để thực hiện thao tác kết hợp chéo trên khoản vay và bảng người vay. Vì có bốn bản ghi trong bảng cho vay và bốn bản ghi trong bảng người vay, nên sau khi thực hiện thao tác nối chéo, chúng ta sẽ có 16 hàng.

Sau khi thực hiện truy vấn này, bạn sẽ tìm thấy kết quả sau:

LoanIDBranchAmountCustIDCustNameLoanID
1B1150001Sonakshi Dixit1
2B2100001Sonakshi Dixit1
3B3200001Sonakshi Dixit1
4B41000001Sonakshi Dixit1
1B1150002Shital Garg4
2B2100002Shital Garg4
3B3200002Shital Garg4
4B41000002Shital Garg4
1B1150003Swara Joshi5
2B2100003Swara Joshi5
3B3200003Swara Joshi5
4B41000003Swara Joshi5
1B1150004Isha Deshmukh2
2B2100004Isha Deshmukh2
3B3200004Isha Deshmukh2
4B41000004Isha Deshmukh2

Mỗi hàng từ bảng cho vay được kết hợp với mỗi hàng của bảng người vay. Vì có bốn bản ghi trong bảng khoản vay và bốn bản ghi trong bảng người vay, nên sau khi thực hiện thao tác nối chéo, chúng ta có 16 hàng.

Ví dụ 4:

Viết truy vấn để thực hiện thao tác nối chéo coi bảng khách hàng là bảng bên trái và bảng đơn đặt hàng là bảng bên phải.

Truy vấn:

Chúng tôi đã sử dụng lệnh SELECT với dấu hoa thị để truy xuất tất cả các cột có trong bảng khách hàng và đơn đặt hàng. Sau đó, chúng tôi đã sử dụng từ khóa CROSS JOIN để thực hiện thao tác nối chéo trên bảng khách hàng và bảng đơn đặt hàng. Vì có ba bản ghi trong bảng khoản vay và ba bản ghi trong bảng đơn hàng nên sau khi thực hiện thao tác nối chéo, chúng ta sẽ nhận được 9 hàng.

Sau khi thực hiện truy vấn này, bạn sẽ tìm thấy kết quả sau:

Customer_IDNameAgeSalaryOrder_IDOrder_DateCustomer_IDAmount
1Aryan Jain515600012012-01-2023000
2Arohi Dixit212500012012-01-2023000
3Vineet Garg243100012012-01-2023000
1Aryan Jain515600022012-05-1822000
2Arohi Dixit212500022012-05-1822000
3Vineet Garg243100022012-05-1822000
1Aryan Jain515600032012-06-2834000
2Arohi Dixit212500032012-06-2834000
3Vineet Garg243100032012-06-2834000

Mỗi hàng từ bảng của khách hàng được kết hợp với mỗi hàng của bảng đơn đặt hàng. Vì có ba bản ghi trong bảng khoản vay và ba bản ghi trong bảng đơn hàng nên sau khi thực hiện thao tác nối chéo, chúng ta sẽ nhận được 9 hàng.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now