Bài giảng Cơ sở Dữ liệu SQL – Phần 3 – Truy vấn (Query) và tạo View – Giải các Truy vấn khó * Tìm mặt hàng ñược khách ñặt hàng nhiều nhất (có số lần ñặt hàng lớn nhất). Hiển thị MaMH, TenMH, SoLanDatHang

- Trước hết, tạo View ñể chứa số lần ñặt hàng của các mặt hàng

Create View "View - Dem Mat hang" as Select ChiTietDH.MaMH, MatHang.TenMH, Count(ChiTietDH.MaMH) as SoLan From ChiTietDH Inner Join MatHang On ChiTietDH.MaMH = MatHang.MaMH Group by ChiTietDH.MaMH, MatHang.TenMH - Kết quả như sau:

- Tiếp tục các mặt hàng ñược ñặt hàng nhiều nhất

Select MaMH, TenMH, SoLan from "View - Dem Mat hang" Where SoLan = (Select Max(SoLan) from "View - Dem Mat hang")

- Kết quả như sau:

* Tìm Khách hàng có Tổng số tiền ñặt hàng trung bình trên một hoá ñơn là lớn nhất. Hiển thị MaKH, TenKH, SoTienTB_HD

- Trước hết, tạo View ñể chứa số lượng hoá ñơn của các khách hàng

Create View "View - So luong Hoa don" as SELECT DonDH.MaKH, KhachHang.TenKH, Count(DonDH.MaKH) AS [SoLuongHD] FROM KhachHang INNER JOIN DonDH ON KhachHang.MaKH = DonDH.MaKH GROUP BY DonDH.MaKH, KhachHang.TenKH

Biên soạn: Th.s Nguyễn Anh Việt Trang 1

Bài giảng Cơ sở Dữ liệu SQL – Phần 3 – Truy vấn (Query) và tạo View – Giải các Truy vấn khó - Kết quả như sau:

- Trong “View – Tong Thanh tien theo Khach hang” ñã có Tổng số tiền của từng Khách hàng, Đem số này chia cho Số lượng HĐ là có kết quả:

Create View "View - So tien TB tren HD" as SELECT "View - So luong Hoa don".MaKH, "View - So luong Hoa don".TenKH, "View - Thanh tien theo Khach hang"."Tong So Tien" / "View - So luong Hoa don".SoLuongHD as TBSoTienHD FROM "View - So luong Hoa don" INNER JOIN "View - Thanh tien theo Khach hang" ON "View - Thanh tien theo Khach hang".MaKH = "View - So luong Hoa don".MaKH

- Kết quả như sau:

- Cuối cùng tìm khách hàng có số tiền TB trên hoá ñơn cao nhất:

SELECT MaKH, TenKH, TBSoTienHD From "View - So tien TB tren HD" Where TBSoTienHD = (Select Max(TBSoTienHD) from "View - So tien TB tren HD")

- Kết quả như sau:

Biên soạn: Th.s Nguyễn Anh Việt Trang 2

Bài giảng Cơ sở Dữ liệu SQL – Phần 3 – Truy vấn (Query) và tạo View – Giải các Truy vấn khó - Tạo View cho truy vấn:

Create View "View - Max So tien TB tren HD" as SELECT MaKH, TenKH, TBSoTienHD From "View - So tien TB tren HD" Where TBSoTienHD = (Select Max(TBSoTienHD) from "View - So tien TB tren HD")

* Tìm các Khách hàng không có ñặt hàng trong tháng 5/2004. Hiển thị MaKH, TenKH

- Trước hết, tạo View ñể tìm các khách hàng có ñặt hàng trong tháng 5/2004:

Create View "View - Khach hang dat hang thang 5/2004" as SELECT CONVERT(VARCHAR(10),NgayGH,103) as [Ngay GH], DonDH.MaKH, KhachHang.TenKH FROM KhachHang INNER JOIN (DonDH INNER JOIN ChiTietDH ON DonDH.MaDH = ChiTietDH.MaDH) ON KhachHang.MaKH = DonDH.MaKH Where NgayGH >= CONVERT(Varchar(10),'2004/05/01',111) And NgayGH <= CONVERT(Varchar(10),'2004/05/31',111) - Sau ñó tìm các khách hàng có trong danh sách KhachHang nhưng không có trong danh sách trên

Create View "View - Khach hang khong dat hang thang 5/2004" as Select KhachHang.MaKH, KhachHang.TenKH from KhachHang where KhachHang.MaKH not in (Select MaKH from "View - Khach hang dat hang thang 5/2004")

- Kết quả như sau:

* Tìm các Mặt hàng không có khách hàng nào ñặt hàng. Hiển thị MaMH, TenMH

- Trước hết, tạo View ñể tìm các mặt hàng có ñặt hàng trong tất cả các ñơn ñặt hàng:

Create View "View - Mat hang co dat hang" as Select Distinct ChiTietDH.MaMH, MatHang.TenMH from ChiTietDH Inner Join MatHang on ChiTietDH.MaMH = MatHang.MaMH

Biên soạn: Th.s Nguyễn Anh Việt Trang 3

Bài giảng Cơ sở Dữ liệu SQL – Phần 3 – Truy vấn (Query) và tạo View – Giải các Truy vấn khó - Kết quả như sau:

- Tiếp tục tìm các mặt hàng không ñược ñặt hàng:

Create View "View - Mat hang khong co dat hang" as Select MaMH, TenMH from MatHang Where MaMH not in (Select MaMH from "View - Mat hang co dat hang")

- Kết quả như sau:

Biên soạn: Th.s Nguyễn Anh Việt Trang 4