Ôn tập về 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 47 trên 72.
Thử thách
KhóCác bảng và cột hiện có:
friends:id,name,friend_id
Với mỗi người trong bảng bạn bè, hãy tìm tất cả các kết nối bạn của bạn bè của họ. Kết nối bạn của bạn bè xảy ra khi người A là bạn với người B, rồi người B lại là bạn với người C. Liệt kê các kết nối này thành ba cột:
- friend1: người bắt đầu
- friend2: bạn trực tiếp của họ
- friend3: bạn của bạn họ
Quy tắc:
- Không đưa vào các trường hợp friend3 là cùng một người với friend1
- Sắp xếp kết quả theo tên của friend1 theo thứ tự giảm dần
Ví dụ: Nếu Alice là bạn với Bob, còn Bob là bạn với Carol, thì Alice-Bob-Carol là một kết nối bạn của bạn bè hợp lệ.
Tự làm thử
-- Nối bảng với chính nó hai lần để mỗi hàng chứa một chuỗi gồm ba người
SELECT ____ AS friend1, ____ AS friend2, ____ AS friend3
FROM friends f1
JOIN friends f2 ON ____
JOIN friends f3 ON ____
-- Loại bỏ các chuỗi quay lại người ở đầu chuỗi
WHERE ____
ORDER BY ____ DESC;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