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