Menu
CoddyTech

Phép nối cơ bản phần 1

Thuộc phần Kiến thức cơ bản trong hành trình SQL của Coddy. Bài học 43 trên 72.

Đến giờ, chúng ta đã giải quyết các bài toán với một bảng. Bây giờ, chúng ta sẽ tìm hiểu cách xử lý nhiều bảng.

Giả sử chúng ta có các bảng sau:

khóa học

course_idlecturer_id
11
21
32

giảng viên

lecturer_idtên
1Jhonas
2Malidos

Nhiệm vụ là hiển thị tên giảng viên tương ứng cho từng khóa học.

Có hai cách để làm việc này. Với mỗi cách, ta ghép từng hàng trong một bảng với hàng tương ứng ở bảng kia. Ta kiểm tra một điều kiện cần thỏa mãn, nếu điều kiện đó được thỏa mãn thì ta kết hợp hai hàng thành một. Kết quả mong muốn cho cả hai cách:

course_idlecturer_name
1Jhonas
2Jhonas
3Malidos

Lựa chọn 1:

SELECT courses.course_id, lecturers.name AS lecturer_name
FROM courses, lecturers
WHERE courses.lecturer_id = lecturers.lecturer_id

Ở đây, ta viết hai bảng trong từ khóa FROM, và trong mệnh đề WHERE, ta yêu cầu lecturer_id của cả hai bản ghi phải giống nhau. Trong mệnh đề SELECT, ta viết table.column để cơ sở dữ liệu biết cần lấy cột ở đâu.

Phương án 2:

SELECT courses.course_id, lecturers.name AS lecturer_name
FROM courses
JOIN lecturers ON courses.lecturer_id = lecturers.lecturer_id

Thay vì WHERE, ta dùng JOIN table ON condition

Kiểu phép nối này còn được gọi là phép nối trong.

challenge icon

Thử thách

Dễ

Các bảng và cột hiện có:

  • grades: course_id, student_id, grade
  • students: id, name

Tạo một truy vấn để lấy student_name, course_id, student_id và grade trong một bảng. Sắp xếp kết quả theo grade theo thứ tự tăng dần.

Tự làm thử

-- Liệt kê các cột theo yêu cầu của bài, dùng bí danh mà bài yêu cầu
SELECT ____
FROM students, grades
-- Chỉ giữ các cặp hàng mà hai bảng cùng mô tả một người
WHERE ____
ORDER BY grade
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức cơ bản

Tự luyện tập: Playground SQL