Đăng nhập

Bài 17. INNER JOIN – Kết hợp 2 bảng theo khóa chung

Trong cơ sở dữ liệu quan hệ, thông tin thường được tổ chức thành nhiều bảng khác nhau để đảm bảo tính linh hoạt, tái sử dụng và dễ bảo trì. Tuy nhiên, để lấy được bức tranh tổng thể, chúng ta cần có cách “nối” các bảng lại với nhau, nhất là khi các bảng có mối liên hệ thông qua khóa chính – khóa ngoại. Trong bài học hôm nay, bạn sẽ học cách sử dụng INNER JOIN, một trong những kỹ thuật quan trọng nhất trong SQL để kết hợp dữ liệu từ nhiều bảng lại thành một kết quả logic và dễ đọc.


JOIN là gì?

JOIN là một kỹ thuật dùng để kết hợp các dòng dữ liệu từ hai hay nhiều bảng lại với nhau dựa trên một điều kiện liên kết, thường là khóa chính (Primary Key) ở bảng này và khóa ngoại (Foreign Key) ở bảng kia.

SQL có nhiều loại JOIN, trong đó INNER JOIN là loại phổ biến và thường được dùng nhất.


INNER JOIN hoạt động như thế nào?

INNER JOIN chỉ trả về những dòng có dữ liệu khớp ở cả hai bảng dựa theo điều kiện nối. Nếu không có dòng nào trùng nhau, kết quả sẽ không bao gồm những dòng đó.

Cú pháp:

SELECT ten_cot
FROM bang1
INNER JOIN bang2
ON bang1.khoa_chinh = bang2.khoa_ngoai;

Ví dụ thực tế

Giả sử bạn có 2 bảng:

students (danh sách học sinh)

idnameclass_id
1An1
2Bình2
3Châu1

classes (thông tin lớp học)

idclass_name
1Lớp A
2Lớp B

Bạn muốn lấy danh sách học sinh kèm tên lớp của họ:

SELECT students.name, classes.class_name
FROM students
INNER JOIN classes
ON students.class_id = classes.id;

Kết quả:

nameclass_name
AnLớp A
BìnhLớp B
ChâuLớp A

Đặt bí danh (alias) cho bảng để viết gọn hơn

SELECT s.name, c.class_name
FROM students AS s
INNER JOIN classes AS c
ON s.class_id = c.id;

Việc đặt bí danh giúp câu lệnh ngắn gọn, dễ đọc, đặc biệt hữu ích khi truy vấn nhiều bảng có tên dài.


Một vài lưu ý khi dùng INNER JOIN

  • Chỉ trả về dòng có kết quả khớp ở cả hai bảng.
  • Nếu bảng có cột trùng tên, bạn cần dùng cú pháp tenbang.tencot để tránh lỗi.
  • INNER JOIN có thể kết hợp nhiều bảng cùng lúc.

Bài tập thực hành

Đề bài:
Bạn có 2 bảng orderscustomers. Mỗi đơn hàng (orders) có customer_id tương ứng trong bảng customers.
Hãy viết câu SQL để lấy danh sách đơn hàng và tên khách hàng tương ứng.


Tổng kết

INNER JOIN là một công cụ cực kỳ quan trọng khi bạn muốn truy vấn dữ liệu có mối liên hệ giữa các bảng. Nắm vững INNER JOIN sẽ giúp bạn xây dựng các câu truy vấn mạnh mẽ và chính xác hơn. Trong bài tiếp theo, chúng ta sẽ tìm hiểu về LEFT JOIN – khi nào cần lấy tất cả dòng từ một bảng, kể cả khi không có bản ghi khớp ở bảng còn lại.

Thảo 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 *

Đăng ký nhận tin mới

Nhận bài học, tài nguyên và cơ hội việc làm qua email hàng tuần.

Chúng tôi cam kết không spam. Bạn có thể hủy bất cứ lúc nào.