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

Nối bảng bản nhạc với nhạc 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

Tên nhạc sĩ ở bảng nào?

Trong mô hình đang dùng, `bannhac` có `idBannhac`, `tenBannhac`, `idNhacsi`; **không có cột `tenNhacsi`**. Tên người nằm ở `nhacsi(idNhacsi,tenNhacsi)`. Muốn hiện tên bài cạnh tên nhạc sĩ, cần ghép mỗi hàng bản nhạc với hàng nhạc sĩ **có cùng mã**. Đó là ý nghĩa của điều kiện `bannhac.idNhacsi = nhacsi.idNhacsi`. Ví dụ dữ liệu giả: bài mã 1 “Mưa đầu mùa” mang mã nhạc sĩ 1; bảng `nhacsi` cho biết mã 1 là Mai An. Bài mã 2 cũng tên “Mưa đầu mùa” nhưng mang mã 2, ứng với Hà Vy. Ghép theo **tên bài** sẽ nhầm hai người; ghép theo mã nhạc sĩ thì mỗi bài tìm đúng hàng cha.

Chạy một câu INNER JOIN

Trong thẻ Query của CSDL thực hành, chạy: ```sql SELECT b.idBannhac, b.tenBannhac, n.tenNhacsi FROM bannhac AS b INNER JOIN nhacsi AS n ON b.idNhacsi = n.idNhacsi ORDER BY b.idBannhac; ``` `AS b` và `AS n` là tên ngắn tạm thời cho hai bảng trong câu truy vấn. `ON` ghi điều kiện nối; `ORDER BY` sắp kết quả. Với ba bài trên máy thử, câu này trả ba hàng: mã1/Mưa đầu mùa/Mai An, mã2/Mưa đầu mùa/Hà Vy, mã6/Ngày nắng/Mai An. Hai bài trùng tên vẫn là hai hàng khác mã. `INNER JOIN` chỉ cho các cặp khớp điều kiện; trong CSDL bài tập, khóa ngoại không cho lưu bài trỏ tới nhạc sĩ không có thật. Nếu kết quả ít hơn dự kiến, kiểm mã, dữ liệu và điều kiện `ON`, không đoán từ giao diện.

Bài luyện

Muốn hiện tenBannhac cùng tenNhacsi, cần nối theo điều kiện nào?
Chọn một đáp án

Bài luyện

Hai hàng có cùng tenBannhac = “Mưa đầu mùa”, nhưng idNhacsi khác nhau. JOIN đúng sẽ cho gì?
Chọn một đáp án

Bài luyện

Trong `FROM bannhac AS b INNER JOIN nhacsi AS n`, `b` và `n` dùng để làm gì?
Chọn một đáp án

Đang học