Bài tập quản lý bản sách có giải
Trang 1BÀI LÀM:
1 Tao cac bang da cho:
- Tạo bảng SACH:
Create table SACH (MaS char(6) Primary key, TenS char(30), NhaXuatBan char(30), SoLuong integer, DonGia integer);
- Tao bang HOA_DON:
Create table HOA_DON (SoHD byte Primary key, NgayLap Date, TenNV char(30), MaKH char(6) references KHACH_HANG (MaKH));
- Tao bang CHI_TIET_HD:
Create table CHI_TIET_HD ( SoHD byte references HOA_DON (SoHD), SoLuong integer, DonGia integer, MaS char(6) references SACH (MaS), Primary key (SoHD,MaS));
- Tao bang KHACH_HANG:
Create table KHACH_HANG ( MaKH char(6) Primary key, TenKH char(30), DiaChi char(40), DienThoai integer);
2 Thực hiện các câu truy vấn để đưa ra:
a) MaKH, TenKH của khách hàng mua sách trong ngày 3/2/2006
SELECT HOA_DON.MaKH, TenKH
FROM KHACH_HANG KH, HOA_DON HD
WHERE KH.MaKH=HD.MaKH and NgayLap=#3/2/2006#;
b) Tổng tiền bán được của cuốn sách có tên là “Cơ sở dữ liệu” Đưa ra TenS và Tổng Tiền (Trường TongTien tự đặt).
Lệnh tạo trường TongTien:
Alter table CHI_TIET_HD add TongTien integer;
Lệnh đưa ra TenS và Tổng tiền:
Select TenS, Sum(TongTien) As Tong_Tien
From SACH S, CHI_TIET_HD CTHD
Where S.MaS=CTHD.MaS and TenS= “Cơ sở dữ liệu”
Trang 2Group by TenS;
c) Danh sách nhân viên lập nhiều hoá đơn bán sách nhất.
Select TenNV, Count(*) As So_HD
From HOA_DON Group by TenNV
Having Count(*)>=All (select Count(*) From HOA_DON Group by TenNV);
d) Số lượng bán ra của từng đầu sách trong năm 2005 Yêu cầu đưa ra MaS, TenS, LuongBan (trường LuongBan tự đặt)
SELECT CHI_TIET_HD.MaS, TenS, Sum(CHI_TIET_HD.SoLuong) AS LuongBan FROM SACH, HOA_DON, CHI_TIET_HD
WHERE SACH.MaS=CHI_TIET_HD.MaS and
CHI_TIET_HD.SoHD=HOA_DON.SoHD and Year(NgayLap)=2005
GROUP BY CHI_TIET_HD.MaS, TenS;
e) Tổng tiền bán được trong từng tháng của năm 2004 và năm 2005 Yêu cầu đưa
ra năm (Nam), Tháng (Thang) và tổng tiền bán được ứng với từng tháng của năm (TongTien) ( Cac trường Nam, Thang, TongTien tự đặt)
Select Month(NgayLap) As Thang, Year(NgayLap) As Nam, Sum(TongTien) As Tong_Tien
From CHI_TIET_HD CTHD, HOA_DON HD
Where CTHD.SoHD=HD.SoHD and (Year(NgayLap)=2004 or
Year(NgayLap)=2005)
Group by Month(NgayLap), Year(NgayLap);
f) Khách hàng tiềm năng của công ty (khách hàng có mua sách với số lượng lớn nhất) Yêu cầu đưa ra MaKH, TenKH, LuongMua ( trường LuongMua tự đặt)
Select HOA_DON.MaKH, TenKH, Sum(SoLuong) As LuongMua
From KHACH_HANG, HOA_DON, CHI_TIET_HD
Where KHACH_HANG.MaKH=HOA_DON.MaKH and
HOA_DON.SoHD=CHI_TIET_HD.SoHD
Trang 3Group by HOA_DON.MaKH, TenKH
Having Sum(SoLuong)>=All(select Sum(SoLuong) From KHACH_HANG,
HOA_DON, CHI_TIET_HD Where KHACH_HANG.MaKH=HOA_DON.MaKH and HOA_DON.SoHD=CHI_TIET_HD.SoHD
Group by HOA_DON.MaKH, TenKH);
g) Danh sách hoá đơn và số lượng sách ứng với từng hoá đơn được lập năm
2005 Yêu cầu đưa ra SoHD, NgayLap, SoLuongSach (trường SoLuongSach
tự đặt)
SELECT HOA_DON.SoHD, NgayLap, Sum(SoLuong) AS SoLuongSach
FROM HOA_DON, CHI_TIET_HD
WHERE HOA_DON.SoHD=CHI_TIET_HD.SoHD and Year(NgayLap)=2005 GROUP BY HOA_DON.SoHD, NgayLap;