Phép tự nối
Thuộc phần Kiến thức cơ bản trong hành trình SQL của Coddy. Bài học 46 trên 72.
Phép tự nối là một loại phép nối. Đến giờ, chúng ta đã tìm hiểu cách nối nhiều bảng, nhưng phép tự nối nối một bảng với chính nó. Một ví dụ kinh điển là bảng employees.
| employee_id | employee_name | manager_id |
| 1 | Minke | 2 |
| 2 | Temur | 3 |
| 3 | Tatjana | 4 |
| 4 | Marinela |
Mỗi nhân viên đều có một người quản lý, ngoại trừ người quản lý cấp cao nhất, và mỗi người quản lý cũng là một nhân viên.
Vấn đề: Với mỗi nhân viên, chúng ta muốn biết tên của người quản lý.
SELECT e2.employee_id, e2.employee_name, e1.employee_name as manager_name
FROM employees as e1
JOIN employees as e2 ON e1.employee_id = e2.manager_idTa nối cùng một bảng với chính nó, nhưng một lần gọi bảng là e1 và lần thứ hai gọi là e2. Ta nối hai trường employee_id và manager_id.
Kết quả:
| employee_id | employee_name | manager_name |
|---|---|---|
| 1 | Minke | Temur |
| 2 | Temur | Tatjana |
| 3 | Tatjana | Marinela |
Thử thách
Trung bìnhCác bảng và cột hiện có:
friends:id,name,friend_id
Tìm các cặp bạn bè có kết bạn lẫn nhau (tình bạn là lẫn nhau khi friend_id của người A trỏ đến người B VÀ friend_id của người B trỏ đến người A). Hiển thị tên của cả hai người bạn trên cùng một hàng. Đặt tên các cột là friend1 và friend2.
Lưu ý: Thêm tiêu chí friend1.id < friend2.id vào mệnh đề WHERE để không đưa các cặp trùng lặp vào kết quả
Tự làm thử
-- Tự nối bảng với chính nó để một hàng hiển thị hai người khác nhau
SELECT ____ AS friend1, ____ AS friend2
FROM friends f1
JOIN friends f2 ON ____
-- Chỉ giữ các cặp tham chiếu lẫn nhau
WHERE ____ AND f1.id < f2.id;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
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