btvn.vn
Tìm kiếm Đăng nhập

Nối ba bảng bản thu, bản nhạc và ca sĩ

Lưu trên thiết bị này
Thực hành tạo và khai thác cơ sở dữ liệu — ICT · Chọn bài khác

Hai mã của một bản thu dẫn tới đâu?

Một hàng `banthuam` chỉ lưu `idBanthuam`, `idBannhac`, `idCasi`. Tên bài ở `bannhac`; tên ca sĩ ở `casi`. Vì vậy cần hai đường nối: `banthuam.idBannhac = bannhac.idBannhac` và `banthuam.idCasi = casi.idCasi`. Nối theo mã **bản thu** với mã bài, hoặc nối tên bài với mã ca sĩ đều sai ý nghĩa. Ví dụ bản thu mã1 gắn bài mã1 và ca sĩ mã1: tra hai bảng cha ra “Mưa đầu mùa” và “Linh Chi”. Bản thu mã2 gắn cùng bài mã1 nhưng ca sĩ mã2: kết quả vẫn là “Mưa đầu mùa” song ca sĩ “Quang Minh”. Một bài có thể xuất hiện ở nhiều bản thu; đừng coi hàng kết quả lặp tên bài là lỗi.

Viết hai JOIN liền nhau

Chạy trên CSDL thử: ```sql SELECT r.idBanthuam, b.tenBannhac, c.tenCasi FROM banthuam AS r INNER JOIN bannhac AS b ON r.idBannhac = b.idBannhac INNER JOIN casi AS c ON r.idCasi = c.idCasi ORDER BY r.idBanthuam; ``` Máy thử trả ba hàng: bản thu1/Mưa đầu mùa/Linh Chi, bản thu2/Mưa đầu mùa/Quang Minh, bản thu6/Ngày nắng/Linh Chi. Mã6 không cho biết đó là bản thu thứ sáu đang có; ID tự tăng có thể có khoảng trống. Nếu dữ liệu của mình khác, đối chiếu từng mã ở `banthuam` với hai bảng cha. Tên nhạc sĩ **chưa có** trong ba bảng của câu này; muốn hiện thêm thì cần nối `nhacsi` qua `bannhac`, ở bài tiếp.

Bài luyện

Trong câu nối banthuam, bannhac và casi, đường nào lấy tên ca sĩ?
Chọn một đáp án

Bài luyện

Hai bản thu khác nhau cùng có idBannhac = 1 nhưng idCasi = 1 và 2. Kết quả JOIN ba bảng có thể thế nào?
Chọn một đáp án

Bài luyện

Câu SELECT ba bảng trên chưa có tenNhacsi. Vì sao?
Chọn một đáp án

Đang học