quanly ban sach , SQL

Màu nền
Font chữ
Font size
Chiều cao dòng

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