Trang chủ » Blog » SQL – Cách sử dụng JOIN để liên kết dữ liệu (phần 3)

SQL – Cách sử dụng JOIN để liên kết dữ liệu (phần 3)

Ở 2 bài trước chúng ta đã cùng tìm hiểu các lệnh cơ bản trong nhóm DML (INSERT, UPDATE, DELETE và SELECT), với từ khoá dùng chung để làm đa dạng hơn cách xử lý ở câu lệnh truy vấn (IN, EXISTS, LIKE và UNION).

Trong bài hôm nay, chúng ta cùng tìm hiểu các lệnh JOIN, với nhiều kiểu khác nhau. Qua tên gọi thì các bạn cũng đã hiểu phần nào về ý nghĩa các kiểu JOIN này rồi, chúng ta cùng tiếp tục đi chi tiết hơn.

1. Vai trò của câu lệnh JOIN trong SQL

Thường hay được sử dụng với câu lệnh SELECT để giúp liên kết dữ liệu của các table.

[Database] DML 3 (Part 1)

[Database] DML 3 (Part 1)

[Database] DML 3 (Part 2)

[Database] DML 3 (Part 2)

2. Các loại câu lệnh JOIN trong SQL

Gồm 4 loại cơ bản sau:

  • INNER JOIN
  • OUTER JOIN
  • SELF JOIN
  • CROSS JOIN

3. Ý nghĩa và cách sử dụng câu lệnh JOIN trong SQL

3.1. Câu lệnh INNER JOIN

Là một kiểu JOIN để kết hợp các records từ 2 hoặc nhiều table có liên kết với nhau qua khoá ngoại (FOREIGN KEY).

INNER JOIN

Cú pháp

SELECT column_name(s)

FROM table1

INNER JOIN table2

ON table1.column_name = table2.column_name

Ví dụ

SELECT *

FROM doctor d

INNER JOIN account_system a

ON d.doctor_id = a.doctor_id;

Sử dụng câu lệnh trên để lấy ra thông tin các bác sĩ và thông tin tài khoản truy cập vào hệ thống của họ.

3.2. Câu lệnh OUTER JOIN

Cú pháp

SELECT column_name(s)

FROM table1

LEFT/RIGHT/FULL [OUTER] JOIN table2

ON table1.column_name = table2.column_name;

Ví dụ về LEFT JOIN

LEFT JOIN

SELECT *

FROM doctor d

LEFT JOIN account_system a ON d.doctor_id = a.doctor_id;

Với mục đích lấy ra thông tin các bác sĩ và thông tin tài khoản truy cập vào hệ thống của họ. Và bác sĩ nào chưa có tài khoản cũng phải liệt kê ra.

Ví dụ về RIGHT JOIN

RIGHT JOIN

SELECT *

FROM doctor d

RIGHT JOIN account_system a ON d.doctor_id = a.doctor_id;

Ngược lại, với việc dùng RIGHT JOIN thì câu lệnh trên sẽ lấy ra các thông tin chung giữa 2 table doctor và account_system, kể cả các tài khoản không có xuất hiện ở table doctor.

Ví dụ về FULL JOIN

FULL JOIN

Với MySQL, không có hỗ trợ FULL JOIN thì chúng ta thực hiện kết hợp LEFT JOIN và RIGHT JOIN như bên dưới:

SELECT *

FROM doctor d

LEFT JOIN account_system a ON d.doctor_id = a.doctor_id

UNION ALL

SELECT *

FROM doctor d

RIGHT JOIN account_system a ON d.doctor_id = a.doctor_id;

3.3. Câu lệnh SELF JOIN

Là một kiểu JOIN mà table đó tự join với chính nó.

Cú pháp

SELECT column_name(s)

FROM table T1, table T2

WHERE condition;

Ví dụ

SELECT d1.middle_name, d1.last_name, d1.specialization_id,

d2.middle_name, d2.last_name, d2.specialization_id

FROM doctor d1, doctor d2

WHERE d1.specialization_id = d2.specialization_id

AND d1.doctor_id <> d2.doctor_id;

Mục đích câu lệnh truy vấn dùng để liệt kê ra các bác sĩ có cùng chuyên khoa với nhau, bằng cách join table doctor với chính nó và những bác sĩ nào có mã chuyên khoa (specialization_id) giống nhau thì hiển thị ra.

3.4. Câu lệnh CROSS JOIN

Là một kiểu JOIN mà trả về tất cả record ở các table, tức là một record ở table này sẽ join với từng record ở table còn lại mà không dựa trên điều kiện nào cả.

Lưu ý: Kết quả từ CROSS JOIN khả năng sẽ rất lớn.

CROSS JOIN

Cú pháp

SELECT column_name(s)

FROM table1

CROSS JOIN table2;

Ví dụ

SELECT *

FROM doctor

CROSS JOIN account_system;

Câu lệnh trên sẽ lấy toàn bộ record của table doctor với từng record ở table account_system mà không cần bất kỳ điều kiện liên kết nào giữa các record.

Kết luận

Sơ lược lại các loại JOIN chúng ta đã tìm hiểu ở phần kiến thức hôm nay:

Khi bạn muốn lấy ra các record có liên kết giữa các table thì sử dụng INNER JOIN.

Ngoài việc lấy các record có liên kết và kể cả các record không liên kết ở một phía table thì hãy nghĩ đến OUTER JOIN, trong này sẽ có 3 loại: LEFT JOIN, RIGHT JOIN, FULL JOIN.

Còn SELF JOIN thì sử dụng khi cần liên kết các record trong chính table đó.

Cuối cùng là CROSS JOIN, dùng khi không cần bất kỳ điều kiện liên kết nào giữa các record trong các table.

Download - Giáo trình thuật toán

13 + 13 =

0 Lời bình

Gửi Lời bình

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 *

BÀI VIẾT LIÊN QUAN

BẠN MUỐN HỌC LẬP TRÌNH?

GỌI NGAY

098 953 44 58

Đăng ký tư vấn lộ trình học lập trình

Đăng ký tư vấn, định hướng lộ trình học và giải đáp các thắc mắc về ngành nghề – Miễn phí – Online.

15 + 1 =

TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM
TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM