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_id | lecturer_id |
|---|---|
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
giảng viên
| lecturer_id | tên |
|---|---|
| 1 | Jhonas |
| 2 | Malidos |
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_id | lecturer_name |
|---|---|
| 1 | Jhonas |
| 2 | Jhonas |
| 3 | Malidos |
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_idThay 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.
Thử thách
DễCác bảng và cột hiện có:
grades:course_id,student_id,gradestudents: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 gradeBà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
2Điều kiện
Kiến thức cơ bản về điều kiệnTừ khóa ANDTừ khóa ORTừ khóa NOTKết hợp nhiều điều kiệnDấu ngoặc đơnGiá trị logic3Định dạng giá trị trả về cụ thể
Giá trị nullSắp xếp kết quả phần 1Sắp xếp kết quả phần 2Ôn tập: Công ty an ninh mạngGiới hạn số bản ghiÔn tập: Nhà máy sản xuất xe6Thử thách nhập môn
Ôn tập: bầu cử quốc hộiÔn tập: cảnh sát bắt giữ tội phạmÔn tập: vật chứa đồ uống tại quầy barÔn tập: kỹ sư tạo cột mớiTự luyện tập: Playground SQL