Cần gợi ý bài tập Đại số quan hệ trong môn Cơ sở dữ liệu


Câu 6 em thật sự bị bí, anh chị nào có hướng làm giúp em với ạ
Em cảm ơn ạ

phác họa từ từ thôi

danh sách tác giả -> phải select from bảng tacgia
giả sử chúng ta có bảng tmp(matg, soluong)
như vậy thì đáp án sẽ là

select tacgia.*, tmp.soluong
from tacgia
left join (...) tmp on tmp.matg = tacgia.matg
order by tmp.soluong

giờ đi tìm tmp để gắn vô (…) trong câu query ở trên
nhìn vô thì thấy có bảng vietboi
như vậy có thể đếm được rồi

select matg, count(masach) as soluong
from vietboi
group by matg

vậy gắn câu sql 2 vào chỗ … trong câu sql 1 là xong
có thể gắn limit/top gì đó nếu có yêu cầu

hướng dẫn này đếm theo đầu sách
còn nâng cao hơn, mỗi đầu sách có nhiều phiên bản, đếm theo phiên bản, bạn có thể tự phát triển thêm theo hướng dẫn, phân tích ở trên

em làm bằng ngôn nguex đại số quan hệ ấy ạ

\begin{aligned} \text{TACGIA\_SACH} &\longleftarrow \rho_{(\text{MaTG, SoSach})}(\ _{\text{MaTG}}\mathcal{J}_{\text{COUNT MaSach}} (\text{VIETBOI})) \\ \text{MIN\_SACH}(\text{SoLuong}) &\longleftarrow \mathcal{J}_{\text{MIN SoSach}}(\text{TACGIA\_SACH}) \\ \text{TACGIA\_SACH} &\longleftarrow \pi_{\text{MaTG,SoSach}}(\text{TACGIA\_SACH} \Join_{\text{SoSach}=\text{SoLuong}} \text{MIN\_SACH}) \\ \text{KET\_QUA} &\longleftarrow \text{TACGIA} * \text{TACGIA\_SACH} \end{aligned}

Viết thêm trường hợp tác giả không viết quyển nào nha. Chứ Relational Algebra nó cùi bắp quá, cú pháp xử lý trường hợp NULL không có nhiều.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?