Đề thi Yêu cầu: 1. Hãy viết lệnh SQL để tạo cấu trúc các bảng trên với số lượng 1 lần mượn không quá 3 quyển. 2. Lập danh sách những độc giả nam của lớp MM04A có mượn sách ở thư viện. 3. Lập danh sách những độc giả của lớp MM04A có mượn sách ở thư viện nhưng chưa trả, gồm có các trường sau: MaDG, Hoten, Masach, Tensach, Ngaymuon, Ngayhen. 4. Thống kê trong thư viện có bao nhiêu sách của mỗi tác giả. 5. Lập danh sách liệt kê ngày có tổng số lượng sách được mượn lớn hơn tổng số lượng sách mà nhân viên “NV02” cho mượn. 6. Tính tổng số sách do độc giả “Nguyễn Văn An” mượn nhưng chưa trả. 7. Thêm một bản ghi mới vào bảng DMSach; dữ liệu phù hợp nhưng không được nhập giá trị null. 8. Thay đổi ngày hẹn trả của độc giả “DG01” thành 1/7/2010; và xóa sách “Toán kinh tế” trong bảng DMSach. 9. Tính số sách mượn trung bình trong 1 ngày. 10. Liệt kê những sách trong thư viện nhưng chưa từng có người mượn, sắp xếp theo thứ tự tăng dần của tác giả. 11. Hiển thị thông tin về cuốn sách được mượn nhiều nhất gồm: Masach, Tensach, tacgia. 12. Hiển thị những cuốn sách lượng mượn trung bình trong 1 lần lớn hơn 2. 13. Hiển thị những cuốn sách được mượn trong tháng 2 năm 2011. 14. Tính tổng số lượng sách được mượn trong tháng 3 năm 2010. 15. Hiển thị những độc giả chưa bao giờ mượn sách. Giải: (câu 9 thua, nên không đưa vô) PHP: -- bai tap quan ly thu vien-- cau 1--Hãy viết lệnh SQL để tạo cấu trúc các bảng trên với số lượng 1 lần mượn không quá 3 quyển.CREATE TABLE DMSACH(MASACH varchar(10) not null constraint FK_DMS primary key,TENSACH varchar(100) not null,TACGIA varchar(50) not null,NHAXB varchar(100),NAMXB float(10),SOTRANG float(10));CREATE TABLE DOCGIA(MADG varchar(10) not null constraint FK_DG primary key,HOTEN varchar(100) not null,NGAYSINH datetime,GIOITINH varchar(10),DIACHI varchar(100),DIENTHOAI varchar(20));CREATE TABLE MUONTRA(MADG varchar(10) not null references DOCGIA(MADG),MASACH varchar(10) not null references DMSACH(MASACH),MANV varchar(10) not null,NGAYMUON datetime not null,NGAYHEN datetime,NGAYTRA datetime,SOLUONG float(10) not null check(SOLUONG<=3),GHICHU varchar(100),constraint FK_DKM primary key (MADG,MASACH,NGAYMUON));INSERT INTO DMSACHVALUES('TM02','Quan tri du an','Nguyen Quang Dung','NXB Tai Chinh',2010,300);INSERT INTO DOCGIAVALUES('DG01','Nguyen Van An',12/01/1990,'Nam','MM04A',0904636232);-- cau 2--Lập danh sách những độc giả nam của lớp MM04A có mượn sách ở thư viện. SELECT DOCGIA.HOTEN, DOCGIA.DIACHI, DOCGIA.GIOITINHFROM DOCGIA, MUONTRAWHERE DOCGIA.MADG = MUONTRA.MADG and DOCGIA.GIOITINH='Nam' and DOCGIA.DIACHI='MM04A'GROUP BY DOCGIA.HOTEN, DOCGIA.DIACHI, DOCGIA.GIOITINH-- Cau 3--Lập danh sách những độc giả của lớp MM04A có mượn sách ở thư viện nhưng chưa trả, gồm có các trường sau: MaDG, Hoten, Masach, Tensach, Ngaymuon, Ngayhen.SELECT MUONTRA.MADG, DOCGIA.HOTEN, MUONTRA.MASACH, DMSACH.TENSACH, MUONTRA.NGAYMUON, MUONTRA.NGAYHENFROM DMSACH, MUONTRA, DOCGIAWHERE MUONTRA.MADG = DOCGIA.MADG and DMSACH.MASACH = MUONTRA.MASACH and DOCGIA.DIACHI = 'MM04A'and MUONTRA.NGAYTRA is nullGROUP BY MUONTRA.MADG, DOCGIA.HOTEN, MUONTRA.MASACH, DMSACH.TENSACH, MUONTRA.NGAYMUON, MUONTRA.NGAYHEN--Cau 4--Thống kê trong thư viện có bao nhiêu sách của mỗi tác giả.SELECT DMSACH.TACGIA, COUNT(DMSACH.MASACH) as SOLUONGFROM DMSACHGROUP BY DMSACH.TACGIA-- cau 5 --Lập danh sách liệt kê ngày có tổng số lượng sách được mượn lớn hơn tổng số lượng sách mà nhân viên “NV02” cho mượn.SELECT MUONTRA.NGAYMUON, SUM(MUONTRA.SOLUONG) as TONGMUONFROM MUONTRAGROUP BY MUONTRA.NGAYMUON HAVING SUM(MUONTRA.SOLUONG)>= (SELECT SUM(MUONTRA.SOLUONG) as TONGFROM MUONTRAWHERE MUONTRA.MANV='NV02')-- cau 6-- Tính tổng số sách do độc giả “Nguyễn Văn An” mượn nhưng chưa trả.SELECT DOCGIA.HOTEN, SUM(MUONTRA.SOLUONG)FROM DOCGIA, MUONTRAWHERE DOCGIA.HOTEN='Nguyen Van An' and DOCGIA.MADG=MUONTRA.MADG and MUONTRA.NGAYTRA is nullGROUP BY DOCGIA.HOTEN--cau 7--Thêm một bản ghi mới vào bảng DMSach; dữ liệu phù hợp nhưng không được nhập giá trị null.INSERT INTO DMSACHVALUES('MM02','Thiet Ke Website voi Joomla!','Bui Tan Viet','VietHanITC',2011,350);--cau 8-- Thay đổi ngày hẹn trả của độc giả “DG01” thành 1/7/2010; và xóa sách “Toán kinh tế” trong bảng DMSach.UPDATE MUONTRASET MUONTRA.NGAYHEN=01/07/2010 WHERE MUONTRA.MADG='DG01'DELETE FROM DMSACH WHERE DMSACH.TENSACH='Toan Kinh Te'-- cau 10-- Liệt kê những sách trong thư viện nhưng chưa từng có người mượn, sắp xếp theo thứ tự tăng dần của tác giả.SELECT DMSACH.MASACH, DMSACH.TENSACHFROM DMSACH, MUONTRA WHERE DMSACH.MASACH not in (SELECT MUONTRA.MASACH FROM MUONTRA GROUP BY MUONTRA.MASACH)GROUP BY DMSACH.MASACH, DMSACH.TENSACH ORDER BY 2 ASC-- cau 11 -- Hiển thị thông tin về cuốn sách được mượn nhiều nhất gồm: Masach, Tensach, tacgia.SELECT MUONTRA.MASACH, DMSACH.TENSACH, DMSACH.TACGIA, MUONTRA.SOLUONGFROM MUONTRA,DMSACHWHERE MUONTRA.MASACH = DMSACH.MASACH and MUONTRA.SOLUONG = (select max(MUONTRA.SOLUONG) FROM MUONTRA)-- cau 12 --Hiển thị những cuốn sách lượng mượn trung bình trong 1 lần lớn hơn 2.SELECT MUONTRA.MASACH, DMSACH.TENSACHFROM MUONTRA, DMSACHWHERE MUONTRA.MASACH = DMSACH.MASACH and MUONTRA.SOLUONG >=2 -- cau 13 -- Hiển thị những cuốn sách được mượn trong tháng 2 năm 2011.SELECT MUONTRA.MASACH, DMSACH.TENSACH, MUONTRA.NGAYMUONFROM MUONTRA, DMSACHWHERE MUONTRA.MASACH = DMSACH.MASACH and month(MUONTRA.NGAYMUON)=02-- cau 14 -- Tính tổng số lượng sách được mượn trong tháng 3 năm 2010.SELECT SUM(MUONTRA.SOLUONG)FROM MUONTRA, DMSACHWHERE MUONTRA.MASACH = DMSACH.MASACH and month(MUONTRA.NGAYMUON) = 02 and year(MUONTRA.NGAYMUON) = 2010-- cau 15-- Hiển thị những độc giả chưa bao giờ mượn sách.SELECT DOCGIA.MADG, DOCGIA.HOTENFROM DOCGIAWHERE DOCGIA.MADG not in (SELECT MUONTRA.MADG FROM MUONTRA)GROUP BY DOCGIA.MADG, DOCGIA.HOTEN
Cái đề là 9. Tính số sách mượn trung bình trong "1" ngày. Chứ không phải là "mỗi ngày". Kết quả như chú làm là ra nhiều dòng. Còn theo tớ hiểu thì tính trung bình một ngày mượn bao nhiêu quyển. Nghĩa là đáp án là một con số. (lấy tổng mượn tất cả chia cho số ngày) Cô đính chính lại đề rồi. Sửa lại là mỗi
cái câu này nó vớ vẩn thế nào ấy. nếu là trung bình 1 ngày thì phải là: Tống số sách mượn/(số ngày) (số ngày tính từ ngày Thư Viện mở cửa đến ngày hiện tại) __ __!
Mình và mấy đứa cũng nghĩ vậy. Cô cũng đồng ý. Nhưng chịu, làm lỗi. Còn cách như Ronaldo thì phải sửa "1" thành "mỗi", lúc này lấy tổng sách cho mượn trong một ngày rồi chia cho số lần mượn
giup m tl cac cau nay nha...nhung thanh vien uu tu 1. Tạo các loại index một cách thích hợp và theo dõi tác động của các lệnh này khi thực hiện các lệnh truy vấn (select). 3. Sau khi đã có thông tin về ThanhTien trong HoaDonChiTiet, hãy cập nhật thông tin của trường Tien trong hóa đơn = tổng số tiền của các mặt hàng có trong hóa đơn = tổng của cột ThanhTien của các bản ghi trong HoaDonChiTiet có cùng số hóa đơn (MaHD). Cập nhật trường TongSoTien=Tien*(1+Thue). 4. Hiển thị danh sách các mặt hàng với đầy đủ các thông tin sau: Loại hàng, mã hàng, tên hàng sắp xếp tăng dần theo tên hàng. 5. Liệt kê từng mặt hàng và tổng số hàng đã bán (có trong hóa đơn chi tiết) theo từng mặt hàng. 6. Liệt kê từng mặt hàng và tổng số tiền đã bán (có trong hóa đơn chi tiết) theo từng mặt hàng. 7. Liệt kê chi tiết các mặt hàng đã bán bao gồm các thông tin sau: Số hóa đơn, Mã sản phẩm (hàng), tên sản phẩm, đơn giá, số lượng, giảm giá và thành tiền. Chỉ liệt kê những mặt hàng có giảm giá trên 1% (tức là trường GiamGia > 0.01), và ThanhTien <10000. 8. Hãy liệt kê danh sách khách hàng với đầy đủ các thông tin như: Mã khách hàng, tên khách hàng, địa chỉ, điện thoại, số hóa đơn đã đặt mua hàng trong tháng 3 năm 1997. (Chỉ liệt kê các khách hàng này và sắp xếp theo thứ tự tăng dần của họ và tên). 9. Liệt kê danh sách các mặt hàng đã bán theo từng loại hàng. Với mỗi loại hàng tính tổng số mặt hàng đã bán, tổng số tiền và cuối cùng có tổng số tất cả mặt hàng đã bán và tổng số tiền. 10. Liệt kê danh sách tất cả các khách hàng đã mua hàng trong tháng 11/2006 và tổng số tiền mà học đã mua. 11. Liệt kê danh sách tất cả các nhân viên và số tiền hàng họ bán được trong tháng 11/2006. 12. Viết Stored Procedure có tên là procProductList có hai tham số vào là pYear và pMonth. Cả hai tham số là số nguyên chỉ năm và tháng. Procedure có một tham số OUTPUT là pMaLoaiHang, là mã của loại hàng đã bán được số tiền nhiều nhất trong tháng pMonth và năm pYear. Số tiền cho mỗi mặt hàng là: DonGia x SoLuong, không tính đến GiamGia. Sau khi viết xong Procedure thì thử lại, sau đó in ra mã và cả tên loại hàng có mã là pMaLoaiHang. 13. Viết Function có tên là funcDonGia có tham số vào là mã mặt hàng (sản phẩm) và trả về đơn giá của mặt hàng này. Viết lệnh thử lại kết quả trên màn hình. 14. Viết trigger xóa bản ghi trong bảng LoaiSanPham. Khi xóa thi lưu thông tin mã loại sản phẩm (MaLoaiSP), và thông tin ngày xóa (DelDate) vào bảng LoaiSP_Hist đồng thời xóa các bản ghi tương ứng trong các bảng liên quan (tức là các bảng có chứa khóa ngoại tham chiếu đến bảng LoaiSanPham. --- Nhập chung bài viết, 18 Tháng một 2013 --- thanks nhieu