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

Nối bốn bảng rồi lọc bản thu

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

Thêm một đường nối, không đoán tên

Từ câu ba bảng, muốn có tên nhạc sĩ của bài trong bản thu thì đi theo đường `banthuam → bannhac → nhacsi`. `banthuam` **không** có `idNhacsi`; vì thế điều kiện nối mới là `bannhac.idNhacsi = nhacsi.idNhacsi`. Câu sau có bốn bảng nhưng mỗi JOIN chỉ nối đúng một quan hệ đã biết: ```sql SELECT r.idBanthuam, b.tenBannhac, n.tenNhacsi, c.tenCasi FROM banthuam AS r INNER JOIN bannhac AS b ON r.idBannhac = b.idBannhac INNER JOIN nhacsi AS n ON b.idNhacsi = n.idNhacsi INNER JOIN casi AS c ON r.idCasi = c.idCasi ORDER BY r.idBanthuam; ``` Máy thử trả ba hàng, trong đó bản thu1 và2 đều là “Mưa đầu mùa” của **Mai An** nhưng do hai ca sĩ khác nhau thể hiện; bản thu6 là “Ngày nắng” của Mai An do Linh Chi thể hiện. Tên người/bài trong bài chỉ là dữ liệu giả.

Lọc đúng người, rồi đọc kết quả

Muốn xem bản thu của nhạc sĩ Mai An trên máy thử, thêm `WHERE n.idNhacsi = 1` **trước** `ORDER BY`. Nếu muốn lọc theo ca sĩ Linh Chi, dùng `WHERE c.idCasi = 1`. Hai cách lọc nêu hai đối tượng khác nhau; đọc mã từ bảng người tương ứng trên máy của mình. Có thể lọc theo `n.tenNhacsi = 'Mai An'`, nhưng tên người có thể trùng; mã riêng tránh lẫn người cùng tên. SGK gọi cột kết quả “tên tác giả” ở một bài vận dụng; bảng hiện tại lưu `tenNhacsi`, không có cột `tenTacgia`. Nếu cần tiêu đề ấy trên kết quả, viết `n.tenNhacsi AS tenTacgia`; bí danh chỉ đổi nhãn của kết quả, không tạo một thông tin mới. Không đổi tên trường thật trong CSDL để khớp lời câu hỏi.

Bài luyện

Từ banthuam và bannhac, muốn nối thêm nhacsi, điều kiện nào đúng?
Chọn một đáp án

Bài luyện

Muốn chỉ xem bản thu của nhạc sĩ mã 1 trong câu bốn bảng, WHERE nào đúng?
Chọn một đáp án

Bài luyện

`n.tenNhacsi AS tenTacgia` làm gì?
Chọn một đáp án

Đang học