PDA

View Full Version : Các bác giải dùm em bài thi SQL (Môn CSDL)



NTad87
11-12-2007, 09:39
DataBase 07. Đề Thi Kết Thúc Học Phần Môn CSDL Chuyên Ngành Quản Lý Đất Đai.
Bà con cố gắng giải dùm em Câu 1 cũng được

Câu 1:Cho lược đồ quan hệ sau với ý nghĩa:
LLSV (MaSV,HoTen,NgaySinh);
HOCPHI (MaHP,MaSV,HocPhi);
THUHOCPHI (******,MaHP,SoTien,LanNop);

Trong đó MaSV ở bảng LLSV,MaHP ở bảng HOCPHI VÀ ****** ở bảng THUHOCPHI là Khóa Chính.

Giải thích:Bảng THUHOCPHI chỉ có những sinh viên nào nộp học phí thì mới có tên trong bảng
nghĩa là số lần nộp tối thiểu là bằng 1 (mỗi sinh viên có thể nộp nhiều lần).Không có trường hợp
số lần nộp bằng 0 vì nếu chưa nộp thì sẽ kô có tên trong bảng THUHOCPHI.

Câu hỏi:Dùng ngôn ngữ SQL để trả lời cho các câu hỏi sau.
a.Hãy liệt kê những sinh viên thiếu học phí?
b.Hãy liệt kê những sinh viên chưa đủ học phí?
c.Hãy liệt kê những sinh viên chưa nộp học phí?
d.Hãy liệt kê những sinh viên nộp đủ học phí?

Hướng dẫn:

Select MaSV from HOCPHI Where MaHP in (Select MaHP from THUHOCPHI) :Liệt kê những
sinh viên đã đóng học phí.

Đáp án:
a.Select * from LLSV Where MaSV in (Select MaSV from HOCPHI Where MaHP not in
(Select MaHP from THUHOCPHI))






Câu 2.Cho lược đồ quan hệ với ý nghĩa:
TEN_QUAN_HE(KhoaChinh , KhoaNgoai , ThuocTinh)

LOP( MaLop , TenLop )
BANDOC ( MaBD , HoTen , NgaySinh , MaLop)
DAUSACH( MaDS , TenSach , SoLuong ,)
Ý Nghĩa: một đầu sách có mã sách, tên sách và số lượng( có nhiều cuốn)
CUONSACH( MaCS , MaDS , STT )
Ý Nghĩa: cuốn sách cụ thể thuộc đầu sách nàoà Tên Sách.
MUONTRA( MaMT , MaCS , MaBD , NgayMuon , NgayTra )
Ý Nghĩa: Lưu quá trình muợn trả sách của độc giả: Mã Muợn Trả,mã cuốn sách(cụ thể cuốn sách nào trong số các cuốn sách của đầu sách), Mã bạn đọc, Ngày muợn,Ngày trả. Nếu chưa trả thì Ngày trả = Null.

Trong đó: - MaLop ở bảng LOP, MaBD ở bảng BANDOC, MaCS ở bảng DAUSACH, MaCS ở bảng CUONSACH, MaMT ở bảng MUONTRA là Khóa Chính.
- MaLop ở bảng BANDOC, MaDS ở bảng CUONSACH,MaCS và MaBD ở bảng MUONTRA là Khóa Ngoại.

Yêu Cầu: Sử dụng ngôn ngữ đại số quan hệ và ngôn ngữ truy vấn SQL để thực hiện các yêu cầu sau đây:

a. Cho biết MaBD,HoTen,NgaySinh những bạn đọc có MaLop=’042601’ ?
b. Cho biết MaBD,HoTen,NgaySinh những bạn đọc không nợ sách ?



Link vao` day de down load ne` các bác!
http://files.myopera.com/NTad87/BaiTap/DataBase%2007.doc

NTad87
11-12-2007, 09:41
Giải nhanh dùm em nha các bác em xin cảm ơn các bác nhiều !

cuonphong
12-12-2007, 17:35
Ban co the lam nhu sau :

------------------
--cau b
------------------
select LLSV.MaSV,LLSV.Hoten,LLSV.NgaySinh
from LLSV ,HOCPHI a
Where LLSV.MaHp= a.MaHP
and a.HocPhi < (select SoTien
From HOCPHI b
Where b.MaHp = a.MaHP)


------------------------------------------------------
-- cau c hoi khong ro rang hinh nhu la giong cau a :(
------------------------------------------------------
------------------
--cau d
------------------
select LLSV.MaSV,LLSV.Hoten,LLSV.NgaySinh
from LLSV ,HOCPHI a
Where LLSV.MaHp= a.MaHP
and a.HocPhi = (select SoTien
From HOCPHI b
Where b.MaHp = a.MaHP)


Hy vong code se chay :)
Bye

NTad87
14-12-2007, 19:53
Cam' ơn bạn nhiều nha.Mình sẽ thử

alexanderdnv
14-12-2007, 23:06
mình chỉ gợi ý theo cách hiểu của mình (đề bài mơ hồ quá) :D

a> thiếu: vd: qui định 3 môn, nhưng chỉ đóng 2 or 2,5 môn:
xem đáp án + có thể thêm distinct ở câu sql thứ 2 cho chảnh!!!

b>chưa đủ: vd: hp của môn a là 1 chai,nhưng chỉ mới đóng 0.5 ly :D
select *
from llsv
where masv in (select masv
from hp, (select mahp, sum(sotien) as sotien
from thp
group by mahp) a
where hp.mahp=a.mahp
and hp.hocphi>a.sotien)


c> và d> bạn chỉ cần giải 1 trong 2 câu là được.

Nếu bạn học phép trừ rồi thì có thể lấy (select *)-a,b,c=d or
(select *)-a,b,d=c.

mình buồn ngủ quá! hình như cuối tuần rồi, nghỉ xả hơi đi, chừng nào rảnh tính tiếp!!!:D

alexanderdnv
14-12-2007, 23:58
lâu ngày làm lại sql cũng mệt thiệt!! nhưng vì đang có hứng thú!!

c> bạn có thể hiểu như sau (0 biết mình hiểu đúng ko???)
những sv có đóng hp(>=1): select distinct masv from hp where mahp in thp.

vậy những sv chưa đóng hp (chắc nằm kèo dưới: singapore chắp VN 4,5 trái ăn đủ)

select *
from llsv
where masv not in (select distinct masv from hp where mahp in thp).

d> tới đây hết hứng rồi!!!

Do kiến thức có giới hạn nên bạn thông cảm, tham khảo thêm thầy cô và bạn bè!!

NTad87
17-12-2007, 21:28
Choa` chán quá nhỉ đề này mình lấy từ đề thi nên chắc là nó phải đúng chứ.Chán ghê ha

alexanderdnv
18-12-2007, 20:59
Choa` chán quá nhỉ đề này mình lấy từ đề thi nên chắc là nó phải đúng chứ.Chán ghê ha

Run thử 3 trường hợp (thiếu, chưa đủ, chưa đóng) của mình coi đúng ko bạn!!!

câu d> lấy * - a,b,c thử!!!

NTad87
20-12-2007, 17:27
Hi` cám ơn bạn chứ cái môn này chỉ học lý thuyết thô chứ có đc viết lên Acess hay Ngôn ngữ nào đâu nên mình bó tay