Cho lược đồ quan hệ QLBS (Quản lý bán sách) gồm các quan hệ:
SACH(MaS, TenS, TacGia, NhaXuatBan, SoLuong, DonGia)
Mỗi cuốn sách có một mã số xác định duy nhất (MaS), tên sách (TenS), Tác giả hoặc nhóm tác giả, số lượng hiện có (SoLuong) và đơn giá bán (DonGia).
HOA_DON(SoHD, MaKH, NgayLap, TenNV)
Mỗi hóa đơn bán sách được gán một mã số duy nhất (SoHD), hoá đơn được lập cho một khách hàng (MaKH) do một nhân viên lập (TenNV), có ngày lập xác định (NgayLap).
CHI_TIET_HD(SoHD, MaS, SoLuong, DonGia)
Một hoá đơn có thể có nhiều sách với số lượng (SoLuong) tuỳ ý và đơn giá (DonGia) tại thời điểm bán cuốn sách đó.
KHACH_HANG(MaKH, TenKH, DiaChi, DienThoai)
Mỗi khách hàng có một mã số duy nhất (MaKH), một tên gọi (TenKH), địa chỉ (DiaChi), điện thoại (DienThoai) để liên lạc.
1. Xác định khóa chính, khóa ngoại của các quan hệ đã cho.
2. Thực hiện câu lệnh truy vấn SQL để đưa ra:
a. MaKH, TenKH của khách hàng mua sách trong ngày 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’. Yêu cầu đưa ra TenS và Tổng tiền ( trường TongTien tự đặt).
c. Danh sách nhân viên lập nhiều hóa đơn bán sách nhất
d. Số lượng bán ra của từng đầu sách trong năm 2005. Yêu cầu in ra MaS, TenS, LuongBan (truong LuongBan tự đặt)
e. Tổng tiền bán được trong từng tháng của năm 2004 và 2005. Yêu cầu đưa ra năm (Nam), Thang (Thang) và tổng tiền bán được ứng với từng tháng của năm (Tong tien). ( Các trường Nam, Thang, Tongtien tự đặt.
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 (với trường LuongMua tự đặt
g. Danh sách hóa đơn và số lượng sách ứng với từng hóa đơn được lập năm 2005.Yêu cầu đưa ra MaHD, NgayLap, SoluongSach (SoLuongSach là trường tự đặt).
Ghi chú: Hàm Year(), Month() xác định năm, tháng từ dữ liệu kiểu Date
BÀ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”
Group 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
Group 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;
Bạn đang đọc truyện trên: Truyen2U.Pro