bai tap ve sql server 2005

21
MÔ HÌNH QUẢN LÝ BÁN HÀNG VÀ CÁC CÂU LỆNH SQL TABLE KHÁCH HÀNG LÀ CÔNG TY CỦA KHÁCH HÀNG Cho cơ sở dữ diệu sau được sử dụng để quản lý công tác giao hàng trong một công ty kinh doanh. trong dó: Bảng NHACUNGCAP lưu trữ dữ liệu về các đối tác cung cấp hàng cho công ty. Bảng MATHANG lưu trữ dữ liệu về các mặt hàng hiện có trong công ty. Bảng LOAIHANG phân loại các mặt hàng hiện có. Bảng NHANVIEN có dữ liệu là các thông tin về nhân viên làm việc trong công ty Bảng KHACHHANG được sử dụng để lưu trữ các thông tin về khách hàng của công ty. Khách hàng đặt hàng cho công ty thông qua các đơn đặt hàng. Thông tin chung về các đơn đặt hàng được lưu trữ trong bảng DONDATHANG (Mỗi một đơn đặt hàng phải do một nhân viên của công ty lập và do đó bảng này có quan hệ với bảng NHANVIEN) Thông tin chi tiết của các đơn đặt hàng (đặt mua mặt hàng gì, số lượng, giá cả,…) được lưu trữ trong bảng CHITIETDATHANG, bảng này có quan hệ với hai bảng DONDATHANG và MAHANG. *CÂU LỆNH SQL ĐỂ TẠO BẢNG VÀ NHẬP DỮ LIỆU: CREATE DATABASE QLBH CREATE TABLE KHACHHANG ( MaKhachHang INT

Upload: loveyoudt-nguyen

Post on 26-Jun-2015

2.910 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Bai Tap Ve SQL Server 2005

MÔ HÌNH QUẢN LÝ BÁN HÀNG VÀ CÁC CÂU LỆNH SQL

TABLE KHÁCH HÀNG LÀ CÔNG TY CỦA KHÁCH HÀNG

Cho cơ sở dữ diệu sau được sử dụng để quản lý công tác giao hàng trong

một công ty kinh doanh.

trong dó:

Bảng NHACUNGCAP lưu trữ dữ liệu về các đối tác cung cấp hàng cho công

ty.

Bảng MATHANG lưu trữ dữ liệu về các mặt hàng hiện có trong công ty.

Bảng LOAIHANG phân loại các mặt hàng hiện có.

Bảng NHANVIEN có dữ liệu là các thông tin về nhân viên làm việc trong

công ty

Bảng KHACHHANG được sử dụng để lưu trữ các thông tin về khách hàng của công ty.

Khách hàng đặt hàng cho công ty thông qua các đơn đặt hàng. Thông tin chung về các đơn

đặt hàng được lưu trữ trong bảng DONDATHANG (Mỗi một đơn đặt hàng phải do một nhân

viên của công ty lập và do đó bảng này có quan hệ với bảng NHANVIEN)

Thông tin chi tiết của các đơn đặt hàng (đặt mua mặt hàng gì, số lượng,

giá cả,…) được lưu trữ trong bảng CHITIETDATHANG, bảng này có quan hệ

với hai bảng DONDATHANG và MAHANG.

*CÂU LỆNH SQL ĐỂ TẠO BẢNG VÀ NHẬP DỮ LIỆU:CREATE DATABASE QLBHCREATE TABLE KHACHHANG(

MaKhachHang INTCONSTRAINT PK_KHACHHANG_MaKhachHang PRIMARY KEY,

TenCongTy NVARCHAR(50),TenGiaoDich NVARCHAR(20),DiaChi NVARCHAR(50),Email VARCHAR(30),

Page 2: Bai Tap Ve SQL Server 2005

DienThoai VARCHAR(15),Fax VARCHAR(15),

)

CREATE TABLE NHACUNGCAP(MaCongTy CHAR(3)

CONSTRAINT PK_NHACUNGCAP_MaCongTy PRIMARY KEY(MaCongTy),TenCongTy NVARCHAR(50),TenGiaoDich NVARCHAR(20),DiaChi NVARCHAR(50),DienThoai VARCHAR(15),Fax VARCHAR(15),Email VARCHAR(30),)

CREATE TABLE LOAIHANG(MaLoaiHang CHAR(2)

CONSTRAINT PK_LOAIHANG_MaLoaiHang PRIMARY KEY(MaLoaiHang),TenLoaiHang NVARCHAR(30),)

CREATE TABLE MATHANG(MaHang CHAR(4)

CONSTRAINT PK_MATHANG_MaHang PRIMARY KEY(MaHang),TenHang NVARCHAR(30),MaCongTy CHAR(3),MaLoaiHang CHAR(2),SoLuong INT,DonViTinh NVARCHAR(10),GiaHang NUMERIC(10,2),CONSTRAINT FK_MATHANG_MaLoaiHang FOREIGN KEY(MaLoaiHang)

REFERENCES LOAIHANG(MaLoaiHang)ON DELETE CASCADEON UPDATE CASCADE,

CONSTRAINT FK_MATHANG_MaCongTy FOREIGN KEY(MaCongTy)REFERENCES NHACUNGCAP(MaCongTy)ON DELETE CASCADEON UPDATE CASCADE,

)

CREATE TABLE NHANVIEN(

MaNhanVien CHAR(4)CONSTRAINT PK_NHANVIEN_MaKhachHang PRIMARY KEY,

Ho NVARCHAR(40),Ten NVARCHAR(10),NgaySinh DATETIME,NgayLamViec DATETIME,DiaChi NVARCHAR(60),DienThoai VARCHAR(15),LuongCoBan NUMERIC(10,2),PhuCap NUMERIC(10,2),

Page 3: Bai Tap Ve SQL Server 2005

)CREATE TABLE DONDATHANG(SoHoaDon INT

CONSTRAINT PK_DONDATHANG_SoHoaDon PRIMARY KEY,MaKhachHang INT,MaNhanVien CHAR(4),NgayDatHang DATETIME,NgayGiaoHang DATETIME,NgayChuyenHang DATETIME,NoiGiaoHang NVARCHAR(80),CONSTRAINT FK_DONDATHANG_MaKhachHang FOREIGN KEY(MaKhachHang)

REFERENCES KHACHHANG(MaKhachHang)ON DELETE CASCADEON UPDATE CASCADE,

CONSTRAINT FK_DONDATHANG_MaNhanVien FOREIGN KEY(MaNhanVien)REFERENCES NHANVIEN(MaNhanVien)ON DELETE CASCADEON UPDATE CASCADE,

)

CREATE TABLE CHITIETDATHANG(SoHoaDon INT,MaHang CHAR(4),GiaBan NUMERIC(10,2),SoLuong INT,MucGiamGia NUMERIC(10,2),CONSTRAINT PK_CHITIETDATHANG_SoHoaDon_MaHang PRIMARY KEY(SoHoaDon, MaHang),CONSTRAINT FK_CHITIETDATHANG_SoHoaDon FOREIGN KEY(SoHoaDon)

REFERENCES DONDATHANG(SoHoaDon)ON DELETE CASCADEON UPDATE CASCADE,

CONSTRAINT FK_CHITIETDATHANG_MaHang FOREIGN KEY(MaHang)REFERENCES MATHANG(MaHang)ON DELETE CASCADEON UPDATE CASCADE,

)

INSERT INTO LOAIHANG VALUES('TP', N'Thực phẩm');INSERT INTO LOAIHANG VALUES('DT', N'Ðiện tử');INSERT INTO LOAIHANG VALUES('MM', N'May mặc');INSERT INTO LOAIHANG VALUES('NT', N'Nội thất');INSERT INTO LOAIHANG VALUES('DC', N'Dụng cụ học tập');

INSERT INTO KHACHHANG VALUES(1, N'Công ty sữa Việt Nam', 'VINAMILK', N'Hà Nội', '[email protected]', '04-891135', '');INSERT INTO KHACHHANG VALUES(2, N'Công ty may mặc Việt Tiến', 'VIETTIEN', N'Sài Gòn', '[email protected]','08-808803','');INSERT INTO KHACHHANG VALUES(3, N'Tổng công ty thực phẩm dinh dưỡng NUTRIFOOD', 'NUTRIFOOD', N'Sài Gòn', '[email protected]','08-809890','');

Page 4: Bai Tap Ve SQL Server 2005

INSERT INTO KHACHHANG VALUES(4, N'Công ty điện máy Hà Nội', 'MACHANOI', N'Hà Nội', '[email protected]','04-898399','');INSERT INTO KHACHHANG VALUES(5, N'Hãng hàng không Việt Nam','VIETNAMAIRLINES',N'Sài Gòn','[email protected]','08-888888','');INSERT INTO KHACHHANG VALUES(6, N'Công ty dụng cụ học sinh MIC','MIC', N'Hà Nội','[email protected]','04-804408','');

INSERT INTO NHANVIEN VALUES('A001', N'Đậu Tố', N'Anh', '03/07/1986','03/01/2009', N'Quy Nhơn', '056-647995', 10000000, 1000000);INSERT INTO NHANVIEN VALUES('H001', N'Lê Thị Bích', N'Hoa', '05/20/1986','03/01/2009', N'An Khê', '', 9000000, 1000000);INSERT INTO NHANVIEN VALUES('H002', N'Ông Hoàng', N'Hải', '08/11/1987','03/01/2009', N'Đà Nẵng', '0905-611725', 12000000, 0);INSERT INTO NHANVIEN VALUES('H003', N'Trần Nguyễn Đức', N'Hoàng', '04/09/1986','03/01/2009', N'Quy Nhơn','', 11000000, 0);INSERT INTO NHANVIEN VALUES('P001', N'Nguyễn Hoài', N'Phong', '06/14/1986', '03/01/2009', N'Quy Nhơn','056-891135', 13000000, 0);INSERT INTO NHANVIEN VALUES('Q001', N'Trương Thị Thế', N'Quang', '06/17/1987', '03/01/2009', N'Ayunpa','0979-792176', 10000000, 500000);INSERT INTO NHANVIEN VALUES('T001', N'Nguyễn Đức', N'Thắng', '09/13/1984', '03/01/2009', N'Phù Mỹ', '0955-593893', 1200000,0);INSERT INTO NHANVIEN VALUES('D001', N'Nguyễn Minh', N'Đăng', '12/29/1987', '03/01/2009', N'Quy Nhơn','0905-779919', 14000000, 0);INSERT INTO NHANVIEN VALUES('M001', N'Hồ Thị Phương', N'Mai', '09/14/1987', '03/01/2009', N'Tây Sơn','', 9000000, 500000);

INSERT INTO NHACUNGCAP VALUES('VNM', N'Công ty sữa Việt Nam', 'VINAMILK', N'Hà Nội', '04-891135', '', '[email protected]');INSERT INTO NHACUNGCAP VALUES('MVT', N'Công ty may mặc Việt Tiến', 'VIETTIEN', N'Sài Gòn', '08-808803', '', '[email protected]');INSERT INTO NHACUNGCAP VALUES('SCM', N'Siêu thị Coop-mart', 'COOPMART', N'Quy Nhơn', '056-888666', '', '[email protected]');INSERT INTO NHACUNGCAP VALUES('DQV', N'Công ty máy tính Quang Vũ', 'QUANGVU', N'Quy Nhơn', '056-888777', '', '[email protected]');INSERT INTO NHACUNGCAP VALUES('DAF', N'Nội thất Đài Loan Dafuco', 'DAFUCO', N'Quy Nhơn', '056-888111', '', '[email protected]');INSERT INTO NHACUNGCAP VALUES('GOL', N'Công ty sản xuất dụng cụ học sinh Golden', 'GOLDEN', N'Quy Nhơn', '056-891135', '', '[email protected]');

INSERT INTO MATHANG VALUES('TP01', N'Sửa hộp XYZ', 'VNM', 'TP', 10, N'Hộp', 4000);INSERT INTO MATHANG VALUES('TP02', N'Sửa XO', 'VNM', 'TP', 12, N'Hộp', 180000);INSERT INTO MATHANG VALUES('TP03', N'Sửa tươi Vinamilk không đường', 'VNM', 'TP', 5000, N'Hộp', 3500);INSERT INTO MATHANG VALUES('TP04', N'Táo', 'SCM', 'TP', 12, N'Ký', 12000);INSERT INTO MATHANG VALUES('TP05', N'Cà chua', 'SCM', 'TP', 15, N'Ký', 5000);INSERT INTO MATHANG VALUES('TP06', N'Bánh AFC', 'SCM', 'TP', 100, N'Hộp', 3000);INSERT INTO MATHANG VALUES('TP07', N'Mì tôm A-One', 'SCM', 'TP', 150, N'Thùng', 40000);

Page 5: Bai Tap Ve SQL Server 2005

INSERT INTO MATHANG VALUES('MM01', N'Đồng phục công sở nữ', 'MVT', 'MM', 140, N'Bộ', 340000);INSERT INTO MATHANG VALUES('MM02', N'Veston nam', 'MVT', 'MM', 30, N'Bộ', 500000);INSERT INTO MATHANG VALUES('MM03', N'Áo sơ mi nam', 'MVT', 'MM', 20, N'Cái', 75000);INSERT INTO MATHANG VALUES('DT01', N'LCD Nec', 'DQV', 'DT', 10, N'Cái', 3100000);INSERT INTO MATHANG VALUES('DT02', N'Ổ cứng 80GB', 'DQV', 'DT', 20, N'Cái', 800000);INSERT INTO MATHANG VALUES('DT03', N'Bàn phím Mitsumi', 'DQV', 'DT', 20 , N'Cái', 150000);INSERT INTO MATHANG VALUES('DT04', N'Tivi LCD', 'DQV', 'DT', 10, N'Cái', 20000000);INSERT INTO MATHANG VALUES('DT05', N'Máy tính xách tay NEC', 'DQV', 'DT', 60, N'Cái', 18000000);INSERT INTO MATHANG VALUES('NT01', N'Bàn ghế ăn', 'DAF', 'NT', 20, N'Bộ', 1000000);INSERT INTO MATHANG VALUES('NT02', N'Bàn ghế Salon', 'DAF', 'NT', 20, N'Bộ', 150000);INSERT INTO MATHANG VALUES('DC01', N'Vở học sinh cao cấp', 'GOL', 'DC', 20000 , N'Ram', 48000);INSERT INTO MATHANG VALUES('DC02', N'Viết bi học sinh', 'GOL', 'DC', 2000 , N'Cây', 2000);INSERT INTO MATHANG VALUES('DC03', N'Hộp màu tô', 'GOL', 'DC', 2000 , N'Hộp', 7500);INSERT INTO MATHANG VALUES('DC04', N'Viết mực cao cấp', 'GOL', 'DC', 2000 , N'Cây', 20000);INSERT INTO MATHANG VALUES('DC05', N'Viết chì 2B', 'GOL', 'DC', 2000 , N'Cây', 3000);INSERT INTO MATHANG VALUES('DC06', N'Viết chì 4B', 'GOL', 'DC', 2000 , N'Cây', 6000);

INSERT INTO DONDATHANG VALUES(1, 1, 'A001', '09/20/2007', '10/01/2007', '10/01/2007', N'Hà Nội');INSERT INTO DONDATHANG VALUES(2, 1, 'H001', '09/20/2007', '10/01/2007', '10/01/2007', N'Hà Nội');INSERT INTO DONDATHANG VALUES(3, 2, 'H002', '09/20/2007', '10/01/2007', '10/01/2007', N'Sài Gòn');INSERT INTO DONDATHANG VALUES(4, 3, 'H003', '09/20/2007', '10/01/2007', '10/01/2007', N'Sài Gòn');INSERT INTO DONDATHANG VALUES(5, 4, 'P001', '09/20/2007', '10/01/2007', '10/01/2007', N'Hà Nội');INSERT INTO DONDATHANG VALUES(6, 5, 'D001', '09/20/2007', '10/01/2007', '10/01/2007', N'Hà Nội');INSERT INTO DONDATHANG VALUES(7, 6, 'M001', '09/20/2007', '10/01/2007', '10/01/2007', N'Hà Nội');INSERT INTO DONDATHANG VALUES(8, 2, 'Q001', '09/20/2007', '10/01/2007', '10/01/2007', N'Sài Gòn');INSERT INTO DONDATHANG VALUES(9, 3, 'T001', '09/20/2007', '10/01/2007', '10/01/2007', N'Sài Gòn');

INSERT INTO CHITIETDATHANG VALUES(9, 'DC01', 48000, 1000, 0);INSERT INTO CHITIETDATHANG VALUES(9, 'DC02', 2000, 1000, 0);

Page 6: Bai Tap Ve SQL Server 2005

INSERT INTO CHITIETDATHANG VALUES(9, 'DC03', 7500, 1000, 0);INSERT INTO CHITIETDATHANG VALUES(8, 'DT04', 20000000, 2, 1000000);INSERT INTO CHITIETDATHANG VALUES(7, 'TP03', 3000, 200, 0);INSERT INTO CHITIETDATHANG VALUES(4, 'MM01', 340000, 80, 10000);INSERT INTO CHITIETDATHANG VALUES(5, 'TP03', 3000, 1000, 0);INSERT INTO CHITIETDATHANG VALUES(6, 'DT05', 18000000, 20, 1000000);INSERT INTO CHITIETDATHANG VALUES(6, 'DT01', 3100000, 2, 100000);INSERT INTO CHITIETDATHANG VALUES(3, 'MM01', 340000, 30, 10000);INSERT INTO CHITIETDATHANG VALUES(3, 'MM02', 500000, 30, 20000);INSERT INTO CHITIETDATHANG VALUES(2, 'MM02', 500000, 20, 20000);INSERT INTO CHITIETDATHANG VALUES(2, 'MM01', 340000, 30, 10000);INSERT INTO CHITIETDATHANG VALUES(1, 'TP01', 4000, 5, 0);INSERT INTO CHITIETDATHANG VALUES(1, 'TP02', 180000, 5, 5000);INSERT INTO CHITIETDATHANG VALUES(1, 'TP03', 12000, 5, 0);INSERT INTO CHITIETDATHANG VALUES(1, 'TP06', 3000, 50, 0);

INSERT INTO CHITIETDATHANG VALUES(1, 'TP07', 40000,100, 0);

Sử dụng câu lệnh SELECT để thực hiện các yêu cầu sau:

1. Cho biết danh sách các đối tác cung cấp hàng cho công ty

2. Mã hàng, tên hàng và số lượng của các mặt hàng hiện có trong công ty

3. Họ tên, địa chỉ và năm bắt đầu làm việc của các nhân viên trong cty

4. Địa chỉ, điện thoại của nhà cung cấp có tên giao dịch VINAMILK

5. Mã và tên của các mặt hàng có giá trị lớn hơn 100000 và số lượng hiện có ít hơn 50

6. Cho biết mỗi mặt hàng trong công ty do ai cung cấp

7. Công ty Việt Tiến đã cung cấp những mặt hàng nào

8. Loại hàng thực phẩm do những công ty nào cung cấp, địa chỉ của công ty đó

9. Những khách hàng nào (tên giao dịch) đã đặt mua mặt hàng sữa hộp của công ty

10. Đơn đặt hàng số 1 do ai đặt và do nhân viên nào lập, thời gian và địa điểm giao hàng là ở đâu

11. Hãy cho biết số tiền lương mà công ty phải trả cho mỗi nhân viên là bao nhiêu (lương=lương

cơ bản+phụ cấp)

12. Trong đơn đặt hàng số 3 đặt mua những mạt hàng nào và số tiền mà khách hàng phải trả cho

mỗi mặt hàng là bao nhiêu(số tiền phải trả=số lượng x giá bán – số lượng x giá bán x mức

giảm giá/100)

13. Hãy cho biết có những khách hàng nào lại chính là đối tác cung cấp hàng cho công ty (tức là

có cùng tên giao dịch)

14. Trong công ty có những nhân viên nào có cùng ngày sinh

15. Những đơn hàng nào yêu cầu giao hàng ngay tại công ty đặt hàng và những đơn đó là của

công ty nào

16. Cho biết tên công ty, tên giao dịch, địa chỉ và điện thoại của các khách hàng và nhà cung cấp

hàng cho công ty

17. Những mặt hàng nào chưa từng được khách hàng đặt mua

Page 7: Bai Tap Ve SQL Server 2005

18. Những nhân viên nào của công ty chưa từng lập hóa đơn đặt hàng nào

19. Những nhân viên nào của công ty có lương cơ bản cao nhất

20. Tổng số tiền mà khách hàng phải trả cho mỗi đơn đặt hàng là bao nhiêu

21. Trong năm 2006 những mặt hàng nào đặt mua đúng mộ lần

22. Mỗi khách hàng phải bỏ ra bao nhiêu tiền để đặt mua hàng của công ty

23. Mỗi nhân viên của công ty đã lập bao nhiêu đơn đặt hàng (nếu chưa hề lập hóa đơn nào thì

cho kết quả là 0)

24. Tổng số tiền hàng mà công ty thu được trong mỗi tháng của năm 2006 (thời gian được tính

theo ngày đặt hàng)

25. Tông số tiền lời mà công ty thu được từ mỗi mặt hàng trong năm 2006

26. Số lượng hàng còn lại của mỗi mặt hàng mà công ty đã có (tổng số lượng hàng hiện có và đã

bán)

27. Nhân viên nào của công ty bán được số lượng hàng nhiều nhất và số lượng hàng bán được

của mhữmg nhân viên này là bao nhiêu

28. Đơn đặt hàng nào có số lượng hàng được đặt mua ít nhất

29. Số tiền nhiều nhất mà khách hàng đã từng bỏ ra để đặt hàng trong các đơn đặt hàng là bao

nhiêu

30. Mỗi một đơn đặt hàng đặt mua những mặt hàng nào và tổng số tiền của đơn đặt hàng

31. Mỗi một loại hàng bao gồm những mặt hàng nào, tổng số lượng của mỗi loại và tổng số

lượng của tất cả các mặt hàng hiện có trong cty

32. Thông kê trong năm 2006 mỗi một mặt hàng trong mỗi tháng và trong cả năm bán được với

số lượng bao nhiêu (Yêu cầu kết quả hiểu thị dưới dạng bảng, hai cột đầu là mã hàng, tên

hàng, các cột còn lại tương ứng từ tháng 1 đến tháng 12 và cả năm. Như vậy mỗi dòng trong

kết quả cho biết số lượng hàng bán được mỗi tháng và trong cả năm của mỗi mặt hàng

Sử dụng câu lệnh UPDATE để thực hiện các yêu cầu

33. Cập nhật lại giá thị trường NGAYCHUYENHANG của những bản ghi có

NGAYCHUYENHANG chưa xác định (NULL) trong bảng DONDATHANG bằng với giá

trị của trường NGAYDATHANG

34. Tăng số lượng hàng của những mặt hàng do công ty VINAMILK cung cấp lên gấp đôi

35.Cập nhật giá trị của trường NOIGIAOHANG trong bảng DONDATHANG bằng địa chỉ của

khách hàng đối với những đơn đặt hàng chưa xác định được nơi giao hàng (giá trị trường

NOIGIAOHANG bằng NULL).

36. Cập nhật lại dữ liệu trong bảng KHACHHANG sao cho nếu tên công ty và tên giao dịch

của khách hàng trùng với tên công ty và tên giao dịch của một nhà cung cấp nào đó thì

địa chỉ, điện thoại, fax và e-mail phải giống nhau.

37. Tăng lương lên gấp rưỡi cho những nhân viên bán được số lượng hàng nhiều hơn 100

Page 8: Bai Tap Ve SQL Server 2005

trong năm 2003.

38. Tăng phụ cấp lên bằng 50% lương cho những nhân viên bán được hàng nhiều nhất.

39. Giảm 25% lương của những nhân viên trong năm 2003 không lập được bất kỳ đơn đặt

hàng nào.

40. Giả sử trong bảng DONDATHANG có thêm trường SOTIEN cho biết số tiền mà khách

hàng phải trả trong mỗi đơn đặt hàng. Hãy tính giá trị cho trường này.

Thực hiện các yêu cầu dưới đây bằng câu lệnh DELETE.

41. Xoá khỏi bảng NHANVIEN những nhân viên đã làm việc trong công ty quá 40 năm.

42. Xoá những đơn đặt hàng trước năm 2000 ra khỏi cơ sở dữ liệu.

43. Xoá khỏi bảng LOAIHANG những loại hàng hiện không có mặt hàng.

44. Xoá khỏi bảng KHACHHANG những khách hàng hiện không có bất kỳ đơn đặt hàng nào

cho công ty.

45. Xoá khỏi bảng MATHANG những mặt hàng có số lượng bằng 0 và không được đặt mua

trong bất kỳ đơn đặt hàng nào.Bài làm:

--CÂU 1:

/* Cho biết danh sách các đối tác cung cấp hàng cho công ty*/

SELECT * FROM NHACUNGCAPSELECT * FROM MATHANGSELECT * FROM NHANVIENSELECT DISTINCT NHACUNGCAP.MACONGTY, TENCONGTYFROM NHACUNGCAP, MATHANGWHERE NHACUNGCAP.MACONGTY=MATHANG.MACONGTY

--CÂU 2

/* Mã hàng, tên hàng và số lượng của các mặt hàng hiện có trong công ty*/

SELECT MAHANG, TENHANG,SOLUONGFROM MATHANGCOMPUTE COUNT(MAHANG), SUM(SOLUONG)--CÂU 3

/* Họ tên, địa chỉ và năm bắt đầu làm việc của các nhân viên trong cty*/

SELECT HO, TEN, DIACHI, YEAR(NGAYLAMVIEC) AS NAMFROM NHANVIEN--CÂU 4

/* Địa chỉ, điện thoại của nhà cung cấp có tên giao dịch VINAMILK*/

SELECT *FROM NHACUNGCAPWHERE TENGIAODICH='VINAMILK'

Page 9: Bai Tap Ve SQL Server 2005

--CÂU 5

/* Mã và tên của các mặt hàng có giá trị lớn hơn 100000 và số lượng hiện có ít hơn 50*/

SELECT *FROM MATHANGWHERE (GIAHANG>100000) AND (SOLUONG<50)--CÂU 6

/* Cho biết mỗi mặt hàng trong công ty do ai cung cấp*/

SELECT DISTINCT MATHANG.MAHANG, TENHANG, TENCONGTYFROM MATHANG, NHACUNGCAPWHERE MATHANG.MACONGTY=NHACUNGCAP.MACONGTY--CÂU 7

/* Công ty Việt Tiến đã cung cấp những mặt hàng nào*/

SELECT * FROM NHACUNGCAPSELECT * FROM MATHANGSELECT MATHANG.MAHANG, MATHANG.TENHANG, MATHANG.MACONGTY, NHACUNGCAP.TENCONGTYFROM NHACUNGCAP, MATHANGWHERE MATHANG.MACONGTY = NHACUNGCAP.MACONGTY AND

TENCONGTY LIKE N'%Việt Tiến'--CÂU 8

/* Loại hàng thực phẩm do những công ty nào cung cấp, địa chỉ của công ty đó*/

SELECT DISTINCT MATHANG.MALOAIHANG, TENLOAIHANG, TENCONGTY, DIACHIFROM NHACUNGCAP, LOAIHANG, MATHANGWHERE LOAIHANG.MALOAIHANG=MATHANG.MALOAIHANG AND MATHANG.MACONGTY = NHACUNGCAP.MACONGTY AND TENLOAIHANG=N'THỰC PHẨM'--CÂU 9

/* Những khách hàng nào (tên giao dịch) đã đặt mua mặt hàng sữa hộp của công ty*/

SELECT KHACHHANG.MAKHACHHANG, TENGIAODICH, TENCONGTY, TENHANGFROM KHACHHANG, DONDATHANG, MATHANG, CHITIETDATHANGWHERE KHACHHANG.MAKHACHHANG=DONDATHANG.MAKHACHHANG AND DONDATHANG.SOHOADON=CHITIETDATHANG.SOHOADON AND CHITIETDATHANG.MAHANG=MATHANG.MAHANG AND TENHANG LIKE N'SỬA HỘP%'--CÂU 10

/* Đơn đặt hàng số 1 do ai đặt và do nhân viên nào lập, thời gian và địa điểm giao hàng là ở đâu*/

SELECT * FROM NHANVIENSELECT * FROM KHACHHANGSELECT * FROM DONDATHANGSELECT KHACHHANG.MAKHACHHANG, TENCONGTY, HO, TEN,NGAYGIAOHANG, NOIGIAOHANGFROM KHACHHANG, NHANVIEN, DONDATHANGWHERE NHANVIEN.MANHANVIEN=DONDATHANG.MANHANVIEN AND

Page 10: Bai Tap Ve SQL Server 2005

KHACHHANG.MAKHACHHANG=DONDATHANG.MAKHACHHANG AND SOHOADON=1--CÂU 11

/* Hãy cho biết số tiền lương mà công ty phải trả cho mỗi nhân viên là bao nhiêu (lương=lương cơ

bản+phụ cấp)*/

SELECT HO, TEN, LUONGCOBAN+PHUCAP AS 'LƯƠNG'FROM NHANVIEN--CÂU 12

/* Trong đơn đặt hàng số 3 đặt mua những mặt hàng nào và số tiền mà khách hàng phải trả cho

mỗi mặt hàng là bao nhiêu(số tiền phải trả=số lượng x giá bán – số lượng x giá bán x mức giảm

giá/100) */

SELECT * FROM MATHANGSELECT MATHANG.MAHANG, SOHOADON, TENHANG, CHITIETDATHANG.SOLUONG*GIABAN*(1-MUCGIAMGIA/100) AS 'SỐ TIỀN PHẢI TRẢ'FROM MATHANG, CHITIETDATHANGWHERE MATHANG.MAHANG=CHITIETDATHANG.MAHANG AND CHITIETDATHANG.SOHOADON=3--CÂU 13/* Hãy cho biết có những khách hàng nào lại chính là đối tác cung cấp hàng cho công ty (tức là có cùng tên giao dịch)*/SELECT KHACHHANG.TENCONGTY, KHACHHANG.TENGIAODICHFROM KHACHHANG, NHACUNGCAPWHERE KHACHHANG.TENGIAODICH=NHACUNGCAP.TENGIAODICH--CÂU 14/* Trong công ty có những nhân viên nào có cùng ngày sinh*/SELECT B.HO, B.TEN, B.NGAYSINHFROM NHANVIEN A, NHANVIEN BWHERE DAY(A.NGAYSINH)=DAY(B.NGAYSINH) AND A.MANHANVIEN<>B.MANHANVIEN

--CÂU 15/* Những đơn hàng nào yêu cầu giao hàng ngay tại công ty đặt hàng và những đơn đó là của công ty nào */SELECT DISTINCT TENCONGTY, DIACHI, NOIGIAOHANGFROM NHACUNGCAP, DONDATHANGWHERE NHACUNGCAP.DIACHI=DONDATHANG.NOIGIAOHANG--CÂU 16/* Cho biết tên công ty, tên giao dịch, địa chỉ và điện thoại của các khách hàng và nhà cung cấp hàng cho công ty*/SELECT TENCONGTY, TENGIAODICH, DIACHI, DIENTHOAI FROM KHACHHANGUNIONSELECT TENCONGTY, TENGIAODICH, DIACHI, DIENTHOAI FROM NHACUNGCAP

--CÂU 17/* Những mặt hàng nào chưa từng được khách hàng đặt mua*/

SELECT MAHANG,TENHANG FROM MATHANGWHERE MAHANG NOT IN (SELECT MAHANG FROM CHITIETDATHANG)

Page 11: Bai Tap Ve SQL Server 2005

--CÂU 18/* Những nhân viên nào của công ty chưa từng lập hóa đơn đặt hàng nào?*/SELECT MANHANVIEN, HO, TEN FROM NHANVIENWHERE MANHANVIEN NOT IN (SELECT MANHANVIEN FROM DONDATHANG)--CÂU 19--Những nhân viên nào của công ty có lương cơ bản cao nhất?SELECT HO, TEN, LUONGCOBANFROM NHANVIENWHERE LUONGCOBAN= (SELECT MAX(LUONGCOBAN) FROM NHANVIEN)

--CÂU 20--Tổng số tiền mà khách hàng phải trả cho mỗi đơn đặt hàng là bao nhiêu?SELECT * FROM DONDATHANGSELECT * FROM CHITIETDATHANG

/*SELECT DISTINCT DONDATHANG.MAKHACHHANG,CHITIETDATHANG.SOHOADON, SUM(SOLUONG*GIABAN) AS 'THANHTIEN'FROM CHITIETDATHANG, DONDATHANGGROUP BY MAKHACHHANG, CHITIETDATHANG.SOHOADON*/--CÁCH 1SELECT DONDATHANG.MAKHACHHANG, CHITIETDATHANG.SOHOADON, SUM(SOLUONG*GIABAN) AS 'THANHTIEN'FROM CHITIETDATHANG, DONDATHANGWHERE DONDATHANG.SOHOADON=CHITIETDATHANG.SOHOADONGROUP BY MAKHACHHANG,CHITIETDATHANG.SOHOADON

--CÁCH 2:SELECT dondathang.sohoadon,dondathang.makhachhang,tencongty, tengiaodich,SUM(soluong*giaban)as 'thanhtien'--SUM(soluong*giaban-soluong*giaban*mucgiamgia/100)FROM (khachhang INNER JOIN dondathangON khachhang.makhachhang=dondathang.makhachhang)INNER JOIN chitietdathangON dondathang.sohoadon=chitietdathang.sohoadonGROUP BY dondathang.makhachhang,tencongty,tengiaodich, dondathang.sohoadon--CÂU 21--Trong năm 2006 những mặt hàng mà đặt mua đúng một lầnSELECT MATHANG.MAHANG, TENHANGFROM (MATHANG INNER JOIN CHITIETDATHANG

ON MATHANG.MAHANG=CHITIETDATHANG.MAHANG)INNER JOIN DONDATHANGON CHITIETDATHANG.SOHOADON=DONDATHANG.SOHOADON

WHERE YEAR(NGAYDATHANG)=2007GROUP BY MATHANG.MAHANG, TENHANGHAVING COUNT(CHITIETDATHANG.MAHANG)=1

-- CÁCH 2:SELECT MAHANG FROM CHITIETDATHANG, DONDATHANGWHERE CHITIETDATHANG.SOHOADON=DONDATHANG.SOHOADON AND YEAR(NGAYDATHANG)=2007GROUP BY MAHANGHAVING COUNT(MAHANG)=1

Page 12: Bai Tap Ve SQL Server 2005

-- CÁCH 3SELECT MATHANG.MAHANGFROM MATHANG, DONDATHANG, CHITIETDATHANGWHERE MATHANG.MAHANG=CHITIETDATHANG.MAHANG AND CHITIETDATHANG.SOHOADON=DONDATHANG.SOHOADON AND YEAR(NGAYDATHANG)=2007GROUP BY MATHANG.MAHANG, TENHANGHAVING COUNT(CHITIETDATHANG.MAHANG)=1--CÂU 22/* Mỗi khách hàng phải bỏ ra bao nhiêu tiền để đặt mua hàng của công ty */SELECT KHACHHANG.MAKHACHHANG, TENCONGTY, TENGIAODICH, SUM(SOLUONG*GIABAN-((SOLUONG*GIABAN*MUCGIAMGIA)/100))FROM KHACHHANG, CHITIETDATHANG, DONDATHANGWHERE KHACHHANG.MAKHACHHANG=DONDATHANG.MAKHACHHANG AND

DONDATHANG.SOHOADON=CHITIETDATHANG.SOHOADONGROUP BY KHACHHANG.MAKHACHHANG, TENCONGTY, TENGIAODICH

--CÂU 23/*Mỗi nhân viên của công ty đã lập bao nhiêu đơn đặt hàng (nếu chưa hề lập hóa đơn nào thì cho kết quả là 0)*/SELECT NHANVIEN.MANHANVIEN, HO, TEN, COUNT(SOHOADON)AS 'SO HOA DON DA LAP'FROM NHANVIEN LEFT JOIN DONDATHANGON NHANVIEN.MANHANVIEN=DONDATHANG.MANHANVIENGROUP BY NHANVIEN.MANHANVIEN, HO, TEN

--CÂU 24/* Tổng số tiền hàng mà công ty thu được trong mỗi tháng của năm 2006 (thời gian được tính theo ngày đặt hàng)*/SELECT MONTH(NGAYDATHANG) AS THANG, SUM(SOLUONG*GIABAN-SOLUONG*GIABAN*MUCGIAMGIA/100)AS 'SO TIEN THU DUOC'FROM DONDATHANG, CHITIETDATHANGWHERE DONDATHANG.SOHOADON=CHITIETDATHANG.SOHOADON AND

YEAR(NGAYDATHANG) = 2007GROUP BY MONTH(NGAYDATHANG)--CÂU 25/* Tổng số tiền lời mà công ty thu được từ mỗi mặt hàng trong năm 2006 */SELECT C.MAHANG, TENHANG,SUM(B.SOLUONG*GIABAN-B.SOLUONG*GIABAN*MUCGIAMGIA/100)-SUM(B.SOLUONG*GIAHANG) AS 'TIEN LOI'FROM DONDATHANG AS A, CHITIETDATHANG AS B, MATHANG AS CWHERE A.SOHOADON=B.SOHOADON AND B.MAHANG=C.MAHANG AND YEAR(NGAYDATHANG)=2007GROUP BY C.MAHANG, TENHANGORDER BY MAHANGCOMPUTE sum(SUM(B.SOLUONG*GIABAN-B.SOLUONG*GIABAN*MUCGIAMGIA/100)-SUM(B.SOLUONG*GIAHANG))

--CÂU 26/* Tổng số lượng hàng của mỗi mặt hàng mà công ty đã có (tổng số lượng hàng hiện có và đã bán)*/

Page 13: Bai Tap Ve SQL Server 2005

SELECT MATHANG.MAHANG, TENHANG,SUM(MATHANG.SOLUONG-CHITIETDATHANG.SOLUONG) AS 'TONG SO LUONG CON'FROM CHITIETDATHANG, MATHANGWHERE MATHANG.MAHANG=CHITIETDATHANG.MAHANGGROUP BY MATHANG.MAHANG, TENHANG

--CÂU 27/* Nhân viên nào của công ty bán được số lượng hàng nhiều nhất và số lượng hàng bán được của mhữmg nhân viên này là bao nhiêu*/--CÁCH 1SELECT NHANVIEN.MANHANVIEN,HO,TEN,SUM(SOLUONG)FROM (NHANVIEN INNER JOIN DONDATHANGON NHANVIEN.MANHANVIEN=DONDATHANG.MANHANVIEN)INNER JOIN CHITIETDATHANGON DONDATHANG.SOHOADON=CHITIETDATHANG.SOHOADONGROUP BY NHANVIEN.MANHANVIEN,HO,TENHAVING SUM(SOLUONG)>=ALL(SELECT SUM(SOLUONG)FROM (NHANVIEN INNER JOIN DONDATHANGON NHANVIEN.MANHANVIEN=DONDATHANG.MANHANVIEN)INNER JOIN CHITIETDATHANG ONDONDATHANG.SOHOADON=CHITIETDATHANG.SOHOADONGROUP BY NHANVIEN.MANHANVIEN,HO,TEN)

--CÁCH 2SELECT NHANVIEN.MANHANVIEN, HO, TEN, SUM(CHITIETDATHANG.SOLUONG)FROM NHANVIEN, DONDATHANG, CHITIETDATHANGWHERE NHANVIEN.MANHANVIEN=DONDATHANG.MANHANVIEN AND DONDATHANG.SOHOADON=CHITIETDATHANG.SOHOADONGROUP BY NHANVIEN.MANHANVIEN, HO, TENHAVING SUM(SOLUONG)>=ALL(SELECT SUM(SOLUONG)

FROM NHANVIEN, DONDATHANG, CHITIETDATHANGWHERE NHANVIEN.MANHANVIEN=DONDATHANG.MANHANVIEN ANDDONDATHANG.SOHOADON=CHITIETDATHANG.SOHOADONGROUP BY NHANVIEN.MANHANVIEN, HO, TEN)

--CÂU 28/* Đơn đặt hàng nào có số lượng hàng được đặt mua ít nhất */SELECT * FROM CHITIETDATHANG

SELECT DONDATHANG.SOHOADON, SUM(SOLUONG)AS 'SO LUONG HANG DAT MUA IT NHAT'FROM DONDATHANG, CHITIETDATHANGWHERE DONDATHANG.SOHOADON=CHITIETDATHANG.SOHOADONGROUP BY DONDATHANG.SOHOADONHAVING SUM(SOLUONG)<=ALL(SELECT SUM(SOLUONG)FROM DONDATHANG, CHITIETDATHANGWHERE DONDATHANG.SOHOADON=CHITIETDATHANG.SOHOADONGROUP BY DONDATHANG.SOHOADON)

--CÂU 29/* Số tiền nhiều nhất mà khách hàng đã từng bỏ ra để đặt hàng trong các đơn đặt hàng là bao nhiêu*/SELECT TOP 1 SUM(SOLUONG*GIABAN-SOLUONG*GIABAN*MUCGIAMGIA/100)FROM CHITIETDATHANG, DONDATHANG

Page 14: Bai Tap Ve SQL Server 2005

WHERE CHITIETDATHANG.SOHOADON=DONDATHANG.SOHOADONORDER BY 1 DESC

--CÂU 30/*Mỗi một đơn đặt hàng đặt mua những mặt hàng nào và tổng số tiền của đơn đặt hàng*/SELECT B.SOHOADON, B.MAHANG, C.TENHANG, SUM(B.SOLUONG*GIABAN) AS 'TONG SO TIEN'FROM DONDATHANG A, CHITIETDATHANG B, MATHANG CWHERE A.SOHOADON=B.SOHOADON AND B.MAHANG=C.MAHANGGROUP BY B.SOHOADON, B.MAHANG, C.TENHANGORDER BY B.SOHOADONCOMPUTE COUNT(B.MAHANG),SUM(SUM(B.SOLUONG*GIABAN)) BY B.SOHOADON--CÂU 31/* Mỗi một loại hàng bao gồm những mặt hàng nào, tổng số lượng của mỗi loại và tổng số lượng của tất cả các mặt hàng hiện có trong cty*/SELECT LOAIHANG.MALOAIHANG, LOAIHANG.TENLOAIHANG, MAHANG, TENHANG, SOLUONGFROM LOAIHANG, MATHANGWHERE MATHANG.MALOAIHANG=LOAIHANG.MALOAIHANGORDER BY LOAIHANG.MALOAIHANGCOMPUTE SUM(SOLUONG) BY (LOAIHANG.MALOAIHANG)COMPUTE SUM(SOLUONG)--CÂU 32/*Thống kê trong năm 2006 mỗi một mặt hàng trong mỗi tháng và trong cả năm bán được với số lượng bao nhiêu (Yêu cầu kết quả hiểu thị dưới dạng bảng, hai cột đầu là mã hàng, tên hàng, các cột còn lại tương ứng từ tháng 1 đến tháng 12 và cả năm. Như vậy mỗi dòng trong kết quả cho biết số lượng hàng bán được mỗi tháng và trong cả năm của mỗi mặt hàng*/SELECT b.mahang,tenhang,SUM(CASE MONTH(ngaydathang) WHEN 1 THEN b.soluong

ELSE 0 END) AS Thang1,SUM(CASE MONTH(ngaydathang) WHEN 2 THEN b.soluong

ELSE 0 END) AS Thang2,SUM(CASE MONTH(ngaydathang) WHEN 3 THEN b.soluong

ELSE 0 END) AS Thang3,SUM(CASE MONTH(ngaydathang) WHEN 4 THEN b.soluong

ELSE 0 END) AS Thang4,SUM(CASE MONTH(ngaydathang) WHEN 5 THEN b.soluong

ELSE 0 END) AS Thang5,SUM(CASE MONTH(ngaydathang) WHEN 6 THEN b.soluong

ELSE 0 END) AS Thang6,SUM(CASE MONTH(ngaydathang) WHEN 7 THEN b.soluong

ELSE 0 END) AS Thang7,SUM(CASE MONTH(ngaydathang) WHEN 8 THEN b.soluong

ELSE 0 END) AS Thang8,SUM(CASE MONTH(ngaydathang) WHEN 9 THEN b.soluong

ELSE 0 END) AS Thang9,SUM(CASE MONTH(ngaydathang) WHEN 10 THEN b.soluong

ELSE 0 END) AS Thang10,SUM(CASE MONTH(ngaydathang) WHEN 11 THEN b.soluong

ELSE 0 END) AS Thang11,SUM(CASE MONTH(ngaydathang) WHEN 12 THEN b.soluong

Page 15: Bai Tap Ve SQL Server 2005

ELSE 0 END) AS Thang12,SUM(b.soluong) AS CaNamFROM (dondathang AS a INNER JOIN chitietdathang AS bON a.sohoadon=b.sohoadon)INNER JOIN mathang AS c ON b.mahang=c.mahangWHERE YEAR(ngaydathang)=2007GROUP BY b.mahang,tenhang--CÂU 33/* Cập nhật lại giá thị trường NGAYCHUYENHANG của những bản ghi có NGAYCHUYENHANG chưa xác định (NULL) trong bảng DONDATHANG bằng với giá trị của trường NGAYDATHANG*/UPDATE DONDATHANGSET NGAYCHUYENHANG=NGAYDATHANGWHERE NGAYCHUYENHANG IS NULLSELECT * FROM DONDATHANG--CÂU 34UPDATE MATHANGSET SOLUONG=SOLUONG*2FROM NHACUNGCAPWHERE NHACUNGCAP.MACONGTY=MATHANG.MACONGTY AND

TENGIAODICH=N'VINAMILK'

SELECT * FROM MATHANG--CÂU 35/* Cập nhật giá trị của trường NOIGIAOHANG trong bảng DONDATHANG bằng địa chỉ của khách hàng đối với những đơn đặt hàng chưa xác định được nơi giao hàng (giá trị trường NOIGIAOHANG bằng NULL).*/UPDATE DONDATHANGSET NOIGIAOHANG=DIACHIFROM KHACHHANGWHERE DONDATHANG.MAKHACHHANG=KHACHHANG.MAKHACHHANG AND

NOIGIAOHANG=NULL

SELECT * FROM DONDATHANG--CÂU 36/* Cập nhật lại dữ liệu trong bảng KHACHHANG sao cho nếu tên công ty và tên giao dịch của khách hàng trùng với tên công ty và tên giao dịch của một nhà cung cấp nào đó thì địa chỉ, điện thoại, fax và e-mail phải giống nhau.*/UPDATE KHACHHANGSET KHACHHANG.DIACHI=NHACUNGCAP.DIACHI,

KHACHHANG.DIENTHOAI=NHACUNGCAP.DIENTHOAI,KHACHHANG.FAX=NHACUNGCAP.FAX,KHACHHANG.EMAIL=NHACUNGCAP.EMAIL

FROM NHACUNGCAPWHERE KHACHHANG.TENCONGTY=NHACUNGCAP.TENCONGTY and

KHACHHANG.TENGIAODICH=NHACUNGCAP.TENGIAODICH

SELECT * FROM KHACHHANG

--CÂU 37/* Tăng lương lên gấp rưỡi cho những nhân viên bán được số lượng hàng nhiều hơn 100 trong năm 2003.*/

Page 16: Bai Tap Ve SQL Server 2005

UPDATE NHANVIENSET LUONGCOBAN=LUONGCOBAN*1.5WHERE MANHANVIEN IN(SELECT MANHANVIEN

FROM DONDATHANG, CHITIETDATHANG WHERE DONDATHANG.SOHOADON=CHITIETDATHANG.SOHOADON

ANDMANHANVIEN=DONDATHANG.MANHANVIEN ANDYEAR(DONDATHANG.NGAYGIAOHANG)=2003

GROUP BY MANHANVIEN HAVING SUM(SOLUONG)>100)

--CÂU 38/* Tăng phụ cấp lên bằng 50% lương cho những nhân viên bán được hàng nhiều nhất.*/UPDATE NHANVIENSET PHUCAP=LUONGCOBAN/2WHERE MANHANVIEN IN

(SELECT MANHANVIEN FROM DONDATHANG, CHITIETDATHANG WHERE DONDATHANG.SOHOADON=CHITIETDATHANG.SOHOADON GROUP BY MANHANVIEN HAVING SUM(SOLUONG)>=ALL

(SELECT SUM(SOLUONG) FROM DONDATHANG, CHITIETDATHANG WHERE DONDATHANG.SOHOADON=CHITIETDATHANG.SOHOADON GROUP BY MANHANVIEN))

SELECT * FROM NHANVIEN

--CÂU 39/* Giảm 25% lương của những nhân viên trong năm 2003 không lập được bất kỳ đơn đặt hàng nào.*/UPDATE NHANVIENSET LUONGCOBAN=LUONGCOBAN*0.85WHERE NOT EXISTS (SELECT MANHANVIEN

FROM DONDATHANG WHERE MANHANVIEN=NHANVIEN.MANHANVIEN AND

YEAR(NGAYDATHANG)=2003)SELECT * FROM NHANVIEN--CÂU 40/* Giả sử trong bảng DONDATHANG có thêm trường SOTIEN cho biết số tiền mà khách hàng phải trả trong mỗi đơn đặt hàng. Hãy tính giá trị cho trường này.*/ALTER TABLE DONDATHANG ADD SOTIEN INTUPDATE DONDATHANGSET SOTIEN=(SELECT SUM(SOLUONG*GIABAN+SOLUONG*GIABAN*MUCGIAMGIA)

FROM CHITIETDATHANGWHERE SOHOADON=DONDATHANG.SOHOADONGROUP BY SOHOADON)

SELECT * FROM DONDATHANG--CÂU 41/* Xoá khỏi bảng NHANVIEN những nhân viên đã làm việc trong công ty quá 40 năm.*/DELETE FROM NHANVIENWHERE YEAR(GETDATE())-YEAR(NGAYLAMVIEC)>40SELECT * FROM NHANVIEN

Page 17: Bai Tap Ve SQL Server 2005

--CÂU 42/* Xoá những đơn đặt hàng trước năm 2000 ra khỏi cơ sở dữ liệu.*/DELETE FROM DONDATHANGWHERE NGAYDATHANG<'1/1/2000'

SELECT * FROM DONDATHANG--CÂU 43/* Xoá khỏi bảng LOAIHANG những loại hàng hiện không có mặt hàng.*/DELETE FROM LOAIHANGWHERE NOT EXISTS (SELECT MALOAIHANG

FROM MATHANG WHERE MALOAIHANG=LOAIHANG.MALOAIHANG)

SELECT * FROM LOAIHANG--CÂU 44/* Xoá khỏi bảng KHACHHANG những khách hàng hiện không có bất kỳ đơn đặt hàng nào cho công ty.*/DELETE FROM KHACHHANGWHERE NOT EXISTS (SELECT SOHOADON

FROM DONDATHANG WHERE MAKHACHHANG=KHACHHANG.MAKHACHHANG)

SELECT * FROM KHACHHANG

--CÂU 45/* Xoá khỏi bảng MATHANG những mặt hàng có số lượng bằng 0 và không được đặt mua trong bất kỳ đơn đặt hàng nào.*/DELETE FROM MATHANGWHERE SOLUONG=0 AND NOT EXISTS(SELECT SOHOADON

FROM CHITIETDATHANG WHERE MAHANG=MATHANG.MAHANG)

SELECT * FROM MATHANG