02. JOIN trong SQL

Khái niệm JOIN trong SQL

Giống như tên của của nó, JOIN có nghĩa là kết hợp những thứ gì đó. Ở trong SQL thì JOIN là kết hợp nội dung của hai hay nhiều hơn các bảng dữ liệu.

SQL chuẩn ANSI đưa ra các loại JOIN sau:

  • Inner JOIN
  • Left outer JOIN
  • Right outer JOIN
  • Full outer JOIN
  • Cross JOIN

Tại sao lại phải sử dụng JOIN trong SQL?

Khi bạn muốn truy cập hai hay nhiều bảng trong một lệnh SELECT.

Khi bạn muốn kết hợp dữ liệu của nhiều bảng thành một bảng và sau khi JOIN bạn có thể thao tác với các bảng đã JOIN như một bảng đơn.

Việc kết hợp hai hay nhiều bảng phụ thuộc vào trường dữ liệu chung giữa hai bảng.

Inner JOIN là kỹ thuật đơn giản và hay được sử dụng nhất trong SQL. Khi ta không nhắc gì đến loại của JOIN thì ta có thể coi đó là JOIN thông thường hoặc inner JOIN.

Cách sử dụng kỹ thuật JOIN (hay inner JOIN)

Xét ví dụ triển khai quá trình JOIN trong SQL, ta có hai bảng dữ liệu chứa các bản ghi của các nhân viên và bảng lương của họ trong một bộ phận.

Bảng “Nhan_vien”:

ID Ten Tuoi Dia_chi Tro_cap
1 Yen 22 Ha Noi 200
2 Hai 32 Ha Noi 200
3 Tran 31 Hai Phong 200
4 Van 34 Ha Noi 200
5 Tuyen 20 Hai Phong 200

Bảng “Luong”:

ID Ngay Ma_nhan_vien Luong
202 27/08/2017 1 800
203 28/08/2017 2 900
302 27/08/2017 5 1500

Các bạn hãy xem kết quả của lệnh sau:

SELECT Ma_nhan_vien, Ten, Tuoi, Luong  

FROM Nhan_vien n, Luong l 

WHERE n.ID =l.Ma_nhan_vien;

Như bạn thấy ở hình trên, một bảng dữ liệu mới được tạo ra dựa trên dữ liệu của hai bảng “Nhan_vien” và “Luong”.

Câu lệnh trong ví dụ trên sẽ có chung kết quả với các câu lệnh sau:

SELECT Ma_nhan_vien, Ten, Tuoi, Luong  

FROM Nhan_vien n INNER JOIN Luong l 

WHERE n.ID =l.Ma_nhan_vien;

Hoặc

SELECT Ma_nhan_vien, Ten, Tuoi, Luong  

FROM Nhan_vien n INNER JOIN Luong l 

ON n.ID =l.Ma_nhan_vien;

Khái niệm outer JOIN trong SQL

Outer Join là cách dữ liệu của tất cả các bảng được kết hợp lại với nhau cho dù là chúng có điểm chung nào hay không.

Chú ý: Các khái niệm JOIN trong SQL chúng tôi không sử dụng những từ tiếng việt, bởi vì các khái niệm này có liên quan tới nội dung của các câu lệnh của chúng.

Xét hai bảng dữ liệu T1 và T2 lần lượt như sau:

T1C
1
2
3
4
T2C
3
4
5
6

Outer JOIN bao gồm các loại:

Full outer JOIN: Sẽ tạo ra sự hợp nhất nội dung của các bảng. Tức là nó sẽ tạo ra một bảng tạm mà chứa nội dung của tất cả các bảng được kết hợp.

Giả sử ta muốn full outer JOIN hai bảng dữ liệu T1 và T2 ở trên với câu lệnh:

SELECT  * FROM T1 FULL OUTER JOIN T2 ON T1.T1C = T2.T2C

Kết quả thu được bởi câu lệnh trên là một bảng tạm có dạng như sau:

T1C T2C
1 NULL
2 NULL
3 3
4 4
NULL 5
NULL 6

Left outer JOIN (hay left JOIN): Sẽ trả về tất cả các bản ghi (các hàng)  của bảng nằm bên trái phép JOIN (Ví dụ khi A <JOIN> B thì A là bảng nằm phía bên trái, và B là bảng nằm phía bên phải) và các giá trị trùng khớp của bảng bên phải. Nếu không có dữ liệu trùng khớp giữa hai bảng, khi đó giá trị NULL sẽ được trả về.

Right outer JOIN (hay right JOIN): Sẽ trả về tất cả các hàng của bảng nằm bên phải phép JOIN được kết hợp với các hàng trùng khớp của bảng bên trái. Nếu không có cột nào trùng khớp trong bảng bên trái. Kết quả trả về sẽ là giá trị NULL

Để tìm hiểu kĩ hơn về left JOIN và right JOIN bạn có thể tìm hiểu ở bài sau.

Để lại một bình luận

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 *