if exists select * from sysobjects where name='vw_dondh_tongsldat' drop view vw_dondh_tongsldat --view này dùng để thống kê tổng số lượng nhập theo đơn đặt hàng.. if exists select * from
Trang 2Ngô Tất Đạt Page 2
create table CTDONDH
(
Sodh char(4) not null,
Mavtu char(4) not null,
Sopn char(4) not null,
Mavtu char(4) not null,
Sopx char(4) not null,
Mavtu char(4) not null,
Namthang char(6) not null,
Mavtu char(4) not null,
Sldau int,
Trang 3Tạo ràng buộc khóa chính, khóa ngoại
alter table VATTU
add constraint PK_VT primary key(Mavtu)
alter table NHACC
add constraint PK_NCC primary key(Manhacc)
alter table DONDH
add
constraint PK_DDH primary key(Sodh),
constraint FK_DDH_MANCC foreign key(Manhacc) references
NHACC(Manhacc)
alter table CTDONDH
add
constraint PK_CTDH primary key(Sodh,Mavtu),
constraint FK_CTDH_SODH foreign key(Sodh) references DONDH(Sodh), constraint FK_CTDH_MAVT foreign key(Mavtu) references VATTU(Mavtu)
alter table PNHAP
add
constraint PK_PNHAP primary key(Sopn),
constraint FK_PNHAP_Sodh foreign key(Sodh) references DONDH(Sodh)
alter table CTPNHAP
add
constraint PK_CTPNHAP primary key(Sopn,Mavtu),
constraint FK_CTPNHAP_SOPN foreign key(Sopn) references
PNHAP(Sopn),
constraint FK_CTPNHAP_MAVT foreign key(Mavtu) references
VATTU(Mavtu)
alter table PXUAT
add constraint PK_PXUAT primary key(Sopx)
alter table CTPXUAT
add
Trang 4Ngô Tất Đạt Page 4
constraint PK_CTPXUAT primary key(Sopx,Mavtu),
constraint FK_CTPXUAT_SOPX foreign key(Sopx) references
constraint PK_TONKHO primary key(Namthang,Mavtu),
constraint FK_TONKHO_MAVT foreign key(Mavtu) references
VATTU(Mavtu)
Tạo ràng buộc
alter table VATTU
add
constraint UN_VT unique(Tenvtu),
constraint DF_VT_DVT default N'Cái' for dvitinh,
constraint CHK_VT_PT check(PhanTram between 0 and 100)
alter table NHACC
add
constraint UN_NCC_TENNCC unique(Tenncc),
constraint UN_NCC_DC unique(Diachi),
constraint DF_NCC_DT default N'Chưa có' for Dienthoai
alter table CTDONDH
add constraint CHK_CTDH check(Sldat>0)
alter table CTPNHAP
constraint CHK_TONKHO_SLD check(Sldau>=0),
constraint CHK_TONKHO_TSLN check(Tongslnhap>=0),
Trang 5Ngô Tất Đạt Page 5
constraint CHK_TONKHO_TSLX check(Tongslxuat>=0),
constraint DF_TONKHO_SLD default 0 for Sldau,
constraint DF_TONKHO_TSLN default 0 for Tongslnhap,
constraint DF_TONKHO_TSLX default 0 for Tongslxuat
Chèn dữ liệu
insert into VATTU values('BU01',N'Bàn ủi Philip A',N'Cái',17)
insert into VATTU values('BU02',N'Bàn ủi Philip B',N'Cái',17)
insert into VATTU values('BU03',N'Bàn ủi Philip C',N'Cái',17)
insert into VATTU values('DD01',N'Đầu Hitachi 1 đĩa',N'Bộ',40)
insert into VATTU values('DD02',N'Đầu Hitachi 3 đĩa',N'Bộ',40)
insert into VATTU values('KO02',N'Đầu Karaoke',N'Bộ',30)
insert into VATTU values('KO04',N'Đầu Karaoke 6 số',N'Bộ',30)
insert into VATTU values('MH01',N'Máy hát sony đời IK-2002',N'Bộ',NULL)
insert into VATTU values('TL15',N'Tủ lạnh Sanyo 150 lít',N'Cái',25)
insert into VATTU values('TL90',N'Tủ lạnh Sanyo 90 lít',N'Cái',20)
insert into VATTU values('TV14',N'Tivi Sony 14 inches',N'Cái',15)
insert into VATTU values('TV21',N'Tivi Sony 21 inches',N'Cái',10)
insert into VATTU values('TV29',N'Tivi Sony 29 inches',N'Cái',10)
insert into VATTU values('TV35',N'Tivi Sony 35 inches',N'Cái',100)
insert into VATTU values('TV40',N'Tivi Sony 40 inches',N'Cái',100)
insert into VATTU values('TV50',N'Tivi Sony 50 inches',N'Cái',37)
insert into VATTU values('TV51',N'Tivi Sony 51 inches',N'cái',37)
insert into VATTU values('TV53',N'Tivi Sony 53 inches',N'Cái',80)
insert into VATTU values('VD01',N'Đầu VCD Sony 1 đĩa',N'Bộ',30)
insert into VATTU values('VD02',N'Đầu VCD Sony 3 đĩa',N'Bộ',15)
THEM GIA TRI VAO BANG NHACC
insert into NHACC Values('C01',N'Lê Minh Trí',N'54,Hậu
Trang 6Ngô Tất Đạt Page 6
insert into DONDH Values('D002','2/1/2002','C01')
insert into DonDH Values('D003','2/10/2006','C02')
insert into DONDH Values('D004','2/17/2006','C05')
insert into DONDH Values('D005','3/1/2006','C02')
insert into DONDH Values('D001', '7/1/2006','C04')
THEM GIA TRI VAO BANG CTDONDH
insert into CTDONDH Values('D001','DD01',20)
insert into CTDONDH Values('D001','DD02',15)
insert into CTDONDH Values('D002','VD02',30)
insert into CTDONDH Values('D001','TV14',30)
insert into CTDONDH Values('D003','TV14',10)
insert into CTDONDH Values('D003','TV29',20)
insert into CTDONDH Values('D004','TL90',10)
insert into CTDONDH Values('D005','TV14',10)
insert into CTDONDH Values('D005','TV29',20)
THEM GIA TRI VAO BANG PNHAP
insert into PNHAP Values('N001','1/17/2006','D001')
insert into PNHAP Values('N002','1/20/2006','D004')
insert into PNHAP Values('N003','1/31/2006','D002')
insert into PNHAP Values('N004','2/15/2006','D003')
insert into PNHAP Values('N005','2/15/2007','D003')
insert into PNHAP Values('N006','2/28/2007','D005')
THEM GIA TRI VAO BANG CTPNHAP
insert into CTPNHAP Values('N001','DD01',8,2500000)
insert into CTPNHAP Values('N001','DD02',10,3500000)
insert into CTPNHAP Values('N002','DD02',5,3500000)
insert into CTPNHAP Values('N003','VD02',30,2500000)
insert into CTPNHAP Values('N004','TV14',5,2500000)
insert into CTPNHAP Values('N004','TV29',2,3500000)
insert into CTPNHAP Values('N006','DD01',190,200000)
insert into CTPNHAP Values('N006','TV29',2,200000)
THEM GIA TRI VAO BANG PXUAT
insert into PXuat Values('X001','1/17/2006',N'Nguyễn Thị Phương Nhi')
Trang 7Ngô Tất Đạt Page 7
insert into PXuat Values('X002','1/25/2006',N'Nguyễn Hùng Phương')
insert into PXuat Values('X003','1/31/2006',N'Nguyễn Tuấn Tú')
THEM GIA TRI VAO BANG CTPXUAT
insert into CTPXUAT Values('X001','DD01',2,3500000)
insert into CTPXUAT Values('X002','DD01',2,3500000)
insert into CTPXUAT Values('X002','DD02',5,4900000)
insert into CTPXUAT Values('X003','DD01',3,3500000)
insert into CTPXUAT Values('X003','DD02',2,4900000)
insert into CTPXUAT Values('X003','VD02',10,3250000)
THEM GIA TRI VAO BANG TONKHO
insert into TONKHO Values(200601,'DD01',0,10,6,4)
insert into TONKHO Values(200601,'DD02',0,15,7,8)
insert into TONKHO Values(200601,'TV29',12,0,0,12)
insert into TONKHO Values(200601,'VD02',0,30,10,20)
insert into TONKHO Values(200602,'DD01',4,0,0,4)
insert into TONKHO Values(200602,'DD02',8,0,0,8)
insert into TONKHO Values(200602,'TV14',5,0,0,5)
insert into TONKHO Values(200602,'VD01',20,0,0,20)
insert into TONKHO Values(200603,'DD01',0,190,0,190)
1 Thêm dữ liệu vào các bảng bằng lệnh INSERT INTO
2 Thêm cột tgnhap kiểu numeric vào bảng PNHAP
alter table PNHAP
add Tgnhap numeric
3 Thêm cột tgxuat kiểu numeric vào bảng PXUAT
alter table PXUAT
add Tgxuat numeric
4 Làm lại tất cả những ví dụ đã cho trên lớp và những ví dụ yêu cầu phải làm
mà chưa hoàn tất,
sau đó chuyển qua câu tiếp theo
5 Cho biết thông tin sopn,mavtu, slgnhap, dgnhap, thanh tien của từng mavtu select sopn,mavtu, slnhap, dgnhap,slnhap*dgnhap as [thanh tien]
from CTPNHAP
Trang 8Yêu cầu ngày nhập có định dạng dd-mm-yyyy
select P.Sopn,NgayNhap=convert(char(10),NgayNhap,103),Tenvtu, Slnhap, Dgnhap,Slnhap*Dgnhap as [Thanh Tien]
from CTPNHAP C,PNHAP P, VATTU V
where C.Sopn=P.Sopn and V.Mavtu = C.Mavtu and
select Sopx,Tenvtu, Slxuat, Dgxuat,Slxuat*Dgxuat as [thanh tien]
from CTPXUAT C, VATTU V
where C.Mavtu=V.Mavtu
11 Cho biết thông tin sopx,ngayxuat,mavtu, slgxuat, dgxuat, thanh tien của từng mavtu
select P.Sopx,Ngayxuat=convert(char(10),Ngayxuat,103),Mavtu, Slxuat,
Dgxuat,Slxuat*Dgxuat as [thanh tien]
from CTPXUAT C, PXUAT P
Trang 9dd-mm-Ngô Tất Đạt Page 9
select P.Sopx,Ngayxuat=convert(char(10),Ngayxuat,103),Tenvtu, Slxuat,
Dgxuat,Slxuat*Dgxuat as [thanh tien]
from CTPXUAT C, PXUAT P, VATTU V
where C.Sopx=P.Sopx and V.Mavtu=C.Mavtu and Ngayxuat between
'01/15/2006' and '03/03/2006'
13 Cập nhật cột tổng trị giá nhập(tgnhap) cho bảng PNHAP
Trong đó tgnhap = (slnhap*dgnhap) trong bảng ctpnhap.Chỉ cập nhật cho các SOPN là N001,N002
update PNHAP
set Tgnhap= (
select sum(Slnhap*Dgnhap) from CTPNHAP C
where C.Sopn=PNHAP.Sopn )
where PNHAP.Sopn in ('N001','N002')
14 Cập nhật cột tổng trị giá nhập(tgnhap) cho bảng PNHAP
Trong đó tgnhap = (slnhap*dgnhap) trong bảng ctpnhap.Chỉ cập nhật cho các phiếu nhập trong tháng 02
update PNHAP
set Tgnhap= (
select sum(Slnhap*Dgnhap) from CTPNHAP C
where C.Sopn=PNHAP.Sopn )
where month(PNHAP.Ngaynhap)=2
15 Cập nhật cột tổng trị giá xuất(tgxuat) cho bảng PXUAT
Trong đó tgxuat = (slxuat*dgxuat) trong bảng ctpxuat.Chỉ cập nhật cho các SOPX là X001
update PXUAT
set Tgxuat= (
select sum(Slxuat*Dgxuat) from CTPXUAT C
where C.Sopx=PXUAT.Sopx )
where PXUAT.Sopx = 'X001'
16 Cập nhật cột tổng trị giá xuất(tgxuất) cho bảng PXUAT
Trong đó tgxuat = (slxuat*dgxuat) trong bảng ctpxuat.Chỉ cập nhật cho các phiếu xuat trong năm 2006-01
Trang 10Ngô Tất Đạt Page 10
update PXUAT
set Tgxuat = (
select sum(Slxuat*Dgxuat) from CTPXUAT C
where C.Sopx = PXUAT.Sopx )
where convert(char(7),PXUAT.Ngayxuat,111)='2006/01'
17 Xoá mã vật tư có dvtinh là „Bộ‟
delete from VATTU where dvitinh=N'Bộ'
18 Insert lại những mẩu tin vừa bị xoá
insert into VATTU values('DD01',N'Đầu Hitachi 1 đĩa',N'Bộ',40)
insert into VATTU values('DD02',N'Đầu Hitachi 3 đĩa',N'Bộ',40)
insert into VATTU values('KO02',N'Đầu Karaoke',N'Bộ',30)
insert into VATTU values('KO04',N'Đầu Karaoke 6 số',N'Bộ',30)
insert into VATTU values('MH01',N'Máy hát sony đời IK-2002',N'Bộ',NULL)
insert into VATTU values('VD01',N'Đầu VCD Sony 1 đĩa',N'Bộ',30)
insert into VATTU values('VD02',N'Đầu VCD Sony 3 đĩa',N'Bộ',15)
19 Thể hiện thông tin : mã vật tư, tên vật tư
where Tenncc like '%H%'
22 Cho biết thông tin sodh, ngaydh, tennhacc
Trang 11Ngô Tất Đạt Page 11
where N.Manhacc=D.Manhacc
24 Cho biết thông tin sodh, ngaydh, tennhacc từ 01/01/2006 đến 15/01/2006 select sodh, ngaydh=convert(char(10)ngaydh,103), tenncc
from DONDH D, NHACC N
where D.Manhacc=N.Manhacc and Ngaydh between '01-01-2006' and 2006'
'01-15 -25 Cho biết số lượng đơn đặt hàng của từng nhà cung cấp.Thông tin gồm tên nhà cung cấp, số lượng đơn đặt hàng
select Tenncc,count(Sodh) as 'SO LUONG DON DAT HANG'
from DONDH D, NHACC N
where D.Manhacc=N.Manhacc
group by Tenncc
26 Cho biết thông tin sodh, tennhacc,tenvtu, sldat
select D.Sodh, Tenncc,Tenvtu, Sldat
from DONDH D, NHACC N, CTDONDH C,VATTU V
where D.Manhacc=N.Manhacc and V.Mavtu=C.Mavtu and C.Sodh=D.Sodh 27 Cho biết thông tin sodh,tennhacc,tenvtu, tongsldat trong tháng 1 và 2
select
D.Sodh,Ngaydh=convert(char(10),Ngaydh,103),Tenncc,Tenvtu,TongSoLuongDat
=sum(Sldat)
from DONDH D, NHACC N, CTDONDH C,VATTU V
where D.Manhacc=N.Manhacc and V.Mavtu=C.Mavtu and C.Sodh=D.Sodh and month(Ngaydh) in (1,2)
30 Cho biết thông tin chi tiết của PHIẾU NHÂP trong tháng 02-2006.Cột
ngày nhập thể hiện theo dạng yyyy-mm.Thông tin gồm các cột sopn, ngaynhap, ten vật tư, slnhap, dgnhap
Trang 12Ngô Tất Đạt Page 12
select P.Sopn, Ngaynhap=convert(char(7),Ngaynhap,111), Tenvtu, Slnhap,
Dgnhap
from PNHAP P,CTPNHAP C,VATTU V
where V.Mavtu=C.Mavtu and P.Sopn=C.Sopn and
select P.Sopn, Ngaynhap=convert(char(7),Ngaynhap,111), Tenvtu, Slnhap,
Dgnhap, Slnhap*Dgnhap as 'ThanhTien'
from PNHAP P,CTPNHAP C,VATTU V
where V.Mavtu=C.Mavtu and P.Sopn=C.Sopn and
convert(char(7),Ngaynhap,111)='2006/02'
32 Thể hiện thông tin SODH, NGAYDH, TENVATU, SLDAT có sldat >=20 select D.Sodh,Ngaydh=convert(char(10),Ngaydh,103),Tenvtu, Sldat
from DONDH D, CTDONDH C,VATTU V
where V.Mavtu=C.Mavtu and C.Sodh=D.Sodh and Sldat>=20
33 Hiển thị danh sách vật tư trong bảng VATTU, sắp xếp tên vật tư giảm dần select *
from VATTU
order by Tenvtu desc
34 Hiển thị danh sách các nhà cung cấp ở Q1 HCM , sắp họ tên nà cung cấp tăng dần
biết rằng thành tiền= SLNHAP * DGNHAP
select *, Slnhap*Dgnhap as 'ThanhTien'
from CTPNHAP
36 Hiển thị danh sách thông tin trong bảng PNHAP có thêm cột trị giá,
biết rằng trị giá = tổng thành tiền của các mẩu tin chi tiết tương ứng trong bảng CTPNHAP
Trang 13group by P.Sopn, Ngaynhap,Sodh,tgnhap
37 Hiển thị danh sách các nhà cung cấp gồm các thông tin sau: mã nhà cung cấp,
tên nhà cung cấp đã có đặt hàng : chú ý: không được trùng lắp dữ liệu
select distinct N.Manhacc,Tenncc
from NhaCC N ,DonDH D
where D.Manhacc=N.Manhacc
38 Hiển thị danh sách các đơn đặt hàng gần đây nhất trong bảng DONDH select top 1 with ties Sodh,Ngaydh=convert(char(10),Ngaydh,103),Manhacc from DONDH
order by getdate() - Ngaydh
39 Hiển thị thông tin phiếu xuất gồm các cột: số phiếu xuất và tổng thành tiền Trong đó sắp xếp tổng thành tiền giảm dần
select Sopx,sum(Slxuat*Dgxuat) as 'Tong Thanh Tien'
from CTPXUAT
group by Sopx
order by sum(Slxuat*Dgxuat) desc
40 Hiển thị danh sách các phiếu xuất hàng có tổng thành tiền lớn nhất
select top 1 with ties Sopx,sum(Slxuat*Dgxuat) as 'Tong Thanh Tien'
from CTPXUAT
group by Sopx
order by sum(Slxuat*Dgxuat) desc
Trang 14view này dùng để thống kê tổng số lượng đặt theo đơn đặt hàng
if exists (select * from sysobjects where name='vw_dondh_tongsldat')
drop view vw_dondh_tongsldat
view này dùng để thống kê tổng số lượng nhập theo đơn đặt hàng
if exists (select * from sysobjects where name='vw_dondh_tongslnhap')
drop view vw_dondh_tongslnhap
if exists (select * from sysobjects where name='vw_dondh_tongsldatnhap')
drop view vw_dondh_tongsldatnhap
Trang 15Ngô Tất Đạt Page 15
GO
create view vw_dondh_tongsldatnhap
as
select C.Sodh,TongSLDat=sum(sldat),TongSLNhap=( select sum(slnhap)
from PNHAP P,CTPNHAP CT where C.Sodh=P.Sodh and P.Sopn=CT.Sopn )
having sum(sldat)= (select sum(slnhap) from PNHAP P,CTPNHAP CT
where C.Sodh=P.Sodh and P.Sopn=CT.Sopn)
6 Tạo view có tên vw_tongnhap bao gồm các thông tin sau : năm tháng, mã vật tư , tổng số lượng nhập
view này dùng để thống kê tổng số lượng nhập của các vật tư trong từng năm tháng(năm tháng có dạng yyyy-mm)
chú ý không dùng bảng tồn kho
if exists (select * from sysobjects where name='vw_tongnhap')
drop view vw_tongnhap
Trang 16Ngô Tất Đạt Page 16
7 Tạo view có tên vw_tongxuat bao gồm các thông tin sau : năm tháng, mã vật
tư, tổng số lượng xuất
view này dùng để thống kê tổnng số lượng xuất của các vật tư trong từng năm tháng(năm tháng có dạng yyyy-mm)
chú ý không dùng bảng tồn kho
if exists (select * from sysobjects where name='vw_tongxuat')
drop view vw_tongxuat
mã vật tư, tên vật tư, số lượng đặt, tổng số lượng đã nhập hàng
if exists (select * from sysobjects where name='vw_dondh_mavtu_tongslnhap') drop view vw_dondh_mavtu_tongslnhap
) from DONDH D,CTDONDH C,VATTU V
where D.Sodh=C.Sodh and C.Mavtu=V.Mavtu
Kết hợp các view ở các câu trên , thực hiện các truy vấn chọn lựa để trả lời các câu hỏi sau:
1 Cho biết danh sách các phiếu đặt hàng chưa từng được nhập hàng
if exists (select * from sysobjects where name='vw_Sodh_chua_nhaphang') drop view vw_Sodh_chua_nhaphang
GO
Trang 17where Sodh not in (select Sodh from vw_dondh_tongslnhap)
2 Cho biết danh sách các mặt hàng chưa bao giờ được đặt hàng
if exists (select * from sysobjects where name='vw_VT_chua_dathang')
drop view vw_VT_chua_dathang
select top 1 with ties n.Manhacc,Tenncc,TSL_DonDH=count(Sodh)
from NHACC N,DONDH D
where N.Manhacc=D.Manhacc
group by n.Manhacc,Tenncc
order by count(Sodh) desc
4 Cho biết vật tư nào có tổng số lượng xuất bán là nhiều nhất
if exists (select * from sysobjects where name='vw_VT_xuat_nhieu_nhat')
drop view vw_VT_xuat_nhieu_nhat
GO
create view vw_VT_xuat_nhieu_nhat
as
select Top 1 with ties V.Mavtu,Tenvtu,TSL_Xuat=sum(Slxuat)
from VATTU V, CTPXUAT C
where V.Mavtu=C.Mavtu
group by V.Mavtu,Tenvtu
order by sum(Slxuat) desc
5 Cho biêt đơn đặt hàng nào có nhiều mặt hàng nhất
if exists (select * from sysobjects where name='vw_Sodh_nhieu_VT_nhat')
drop view vw_Sodh_nhieu_VT_nhat
Trang 18order by count(Mavtu) desc
6 Cho biết tình hình nhập xuất của vật tư , thông tin gồm: năm tháng mm), mã vật tư, tên vật tư, tổng số lượng nhập, tổng số lượng xuất
(yyyy-if exists (select * from sysobjects where name='vw_tinhhinh_nhapxuat')
drop view vw_tinhhinh_nhapxuat
from VATTU V, vw_tongnhap N
from DONDH D,VATTU V,CTDONDH C
where D.Sodh=C.Sodh and C.Mavtu=V.Mavtu
Trang 19Ngô Tất Đạt Page 19
select
Namthang=convert(char(7),Ngaydh,111),V.Mavtu,Tenvtu,TSL_Dat=sum(Sldat)
from DONDH D,VATTU V,CTDONDH C
where D.Sodh=C.Sodh AND C.Mavtu=V.Mavtu
group by convert(char(7),Ngaydh,111),V.Mavtu,Tenvtu
Trang 20Ngô Tất Đạt Page 20
Bài tập về BIẾN và IF Dùng cả hai cách IF….ELSE và IF EXISTS
1 Tính xem có vật tư nào bán ra số lượng nhiều hơn 4 hay không? Nếu có in
ra thông báo „Các vật tư có số lượng > 4
là:‟ và in ra đồng thời Mã vật tư, tên vật tư.Nếu không thấy thì xuất thông báo không tìm thấy
if (select count(*) from CTPXUAT where SLXUAT >4) >0
else
print N' Không tìm thấy'
2 Tìm kiếm những đơn nhập hàng vào ngày thứ 6.Nếu có in ra câu thông báo
„Những đơn hàng nhập vào ngày Friday
là: In ra thông tin của phiếu nhập vào ngày thứ 6 kèm thêm cột thứ Dùng hàm DATENAME để lấy thứ
tham khảo giáo trình.Nếu không thấy thì xuất thông báo là không tìm thấy
if (select count(*) from PNHAP where datename(dw,NGAYNHAP)='Friday') >0
begin
print N' Những đơn hàng nhập vào ngày Friday là: '
Trang 21Ngô Tất Đạt Page 21
select SOPN,NGAYNHAP=convert(char(10),NGAYNHAP,103),SODH,THU=datename(dw,NGAYNHAP)
from PNHAP where datename(dw,NGAYNHAP)='Friday' end
from PNHAP where datename(dw,NGAYNHAP)='Friday' end
else
print N' Không tìm thấy'
3 Tìm những phiếu đặt hàng từ tháng 01/2006 đến tháng 3/2006 Nếu tìm thấy in câu thông báo „Những phiếu đặt
hàng từ 01/2006 đến 03/2006 là: sau đó in kèm với các thông tin của các
phiếu đặt hàng tìm thấy
nếu không thấy thì xuất thông báo „Không tìm thấy.Khi in thông báo nhớ
truyền biến vào thông báo
DECLARE @TUNGAY CHAR(7),@DENNGAY CHAR(7)
SET @TUNGAY = '2006/01'
SET @DENNGAY = '2006/03'
if (select count(*) from DONDH where year(NGAYDH)=2006 and
month(NGAYDH) between 1 and 3) >0
begin
print N' Những phiếu đặt hàng từ ' + @TUNGAY+ N'đến ngày '+
@DENNGAY +N' là: '
select SODH,NGAYDH=convert(char(10),NGAYDH,103),MANHACC from DONDH
where year(NGAYDH)=2006 and month(NGAYDH) between 1 and 3 end
else
Trang 22if exists (select * from DONDH where year(NGAYDH)=2006 and
month(NGAYDH) between 1 and 3)
begin
print N' Những phiếu đặt hàng từ ' + @TUNGAY+ N'đến ngày '+
@DENNGAY +N' là: '
select SODH,NGAYDH=convert(char(10),NGAYDH,103),MANHACC from DONDH
where year(NGAYDH)=2006 and month(NGAYDH) between 1 and 3 end
Dùng biến để xuất thông báo
declare @NGAYDH char(7)
set @NGAYDH = '2006/01'
if (select count(*) from DONDH where
convert(char(7),NGAYDH,111)=@NGAYDH and SODH not in(select SODH from PNHAP)) >0
begin
print N' Những phiếu đặt hàng chưa từng nhập hàng trong '+
@NGAYDH +': '
select SODH,NGAYDH=convert(char(10),NGAYDH,103),MANHACC from DONDH
where convert(char(7),NGAYDH,111)=@NGAYDH and SODH not in(select SODH from PNHAP)
end
else
Trang 23if exists (select * from DONDH where
convert(char(7),NGAYDH,111)=@NGAYDH and SODH not in(select SODH from PNHAP))
begin
print N' Những phiếu đặt hàng chưa từng nhập hàng trong '+
@NGAYDH +': '
select SODH,NGAYDH=convert(char(10),NGAYDH,103),MANHACC from DONDH
where convert(char(7),NGAYDH,111)=@NGAYDH and SODH not in(select SODH from PNHAP)
end
else
print N' Không tìm thấy những phiếu đặt hàng chưa từng nhập hàng trong '+ @NGAYDH
5 Cho biết thông tin số lượng nhập 01/2006 Nếu có những phiếu nhập
01/2006 thì xuất thông báo, kèm thông tin
Năm tháng, mã vậ tư, tổng số lượng nhập Nếu không thấy thì xuất thông báo không tìm thấy
Truyền biến khi xuất thông báo.Không dùng bảng tồn kho
declare @NGAYNHAP char(7)
from PNHAP P,CTPNHAP C where C.SOPN=P.SOPN and convert(char(7),NGAYNHAP,111)=@NGAYNHAP
group by convert(char(7),NGAYNHAP,111),MAVTU end
else
Trang 24from PNHAP P,CTPNHAP C where C.SOPN=P.SOPN and convert(char(7),NGAYNHAP,111)=@NGAYNHAP
group by convert(char(7),NGAYNHAP,111),MAVTU end
else
print N' Không tìm thấy những phiếu nhập trong '+ @NGAYNHAP
6 Cho biết thông tin số lượng xuất 01/2006.Nếu có những phiếu xuất 01/2006 thì xuất thông báo , kèm thông tin
Năm tháng, mã vậ tư, tổng số lượng xuất Nếu không thấy thì xuất thông báo không tìm thấy
Truyền biến khi xuất thông báo.Không dùng bảng tồn kho
declare @NGAYXUAT char(7)
from PXUAT P,CTPXUAT C where C.SOPX=P.SOPX and convert(char(7),NGAYXUAT,111)=@NGAYXUAT
group by convert(char(7),NGAYXUAT,111),MAVTU end
else
Trang 25from PXUAT P,CTPXUAT C where C.SOPX=P.SOPX and convert(char(7),NGAYXUAT,111)=@NGAYXUAT
group by convert(char(7),NGAYXUAT,111),MAVTU end
else
print N' Không tìm thấy những phiếu xuất trong '+ @NGAYXUAT
7 Cho biết danh sách vật tư có số lượng xuất nhiều nhất.In ra câu thông báo, kèm thông tin
của vật tư có số lượng xuất bán nhiều nhất
if (select count(*) from CTPXUAT) >0
Trang 268 Cho biết danh sách những vật tư có tổng số lượng xuất bán lớn hơn 40.Nếu
có xuất thông báo, kèm thông tin vật tư
có tổng số lượng xuất bán lớn hơn 40.Còn ngược lại xuất thông báo „không có vật tư có tổng số lượng xuất bán lớn hơn 40
if ( select count(*) from CTPXUAT where MAVTU in (select MAVTU from
CTPXUAT group by MAVTU having sum(SLXUAT) >40) ) >0
begin
print N' Danh sách vật tư có tổng số lượng xuất > 40: ' select V.MAVTU,TENVTU,TSL_XUAT=SUM(SLXUAT) from VATTU V,CTPXUAT C
where V.MAVTU=C.MAVTU group by V.MAVTU,TENVTU having SUM(SLXUAT) > 40 end
else
print N' Không có vật tư có tổng số lượng xuất bán lớn hơn 40'
IF EXISTS
if exists ( select * from CTPXUAT where MAVTU in (select MAVTU from
CTPXUAT group by MAVTU having sum(SLXUAT) >40) )
begin
print N' Danh sách vật tư có tổng số lượng xuất > 40: ' select V.MAVTU,TENVTU,TSL_XUAT=SUM(SLXUAT) from VATTU V,CTPXUAT C
where V.MAVTU=C.MAVTU group by V.MAVTU,TENVTU having SUM(SLXUAT) > 40
9 Tìm những đơn đặt hàng có số chi tiết nhiều nhất Xuất thông báo „Số đơn đặt hàng có nhiều chi tiết nhất :
kèm thông tin của đơn đặt hàng đó
if ( select count(*) from DONDH where SODH in (select SODH from CTDONDH) ) >0
Trang 27from DONDH D,CTDONDH C where D.SODH=C.SODH group by D.SODH,convert(char(10),NGAYDH,103),MANHACC order by count(C.SODH) desc
where D.SODH=C.SODH group by D.SODH
order by count(C.SODH) desc end
else
print N' Không tìm thấy'
10 Tìm thông tin những nhà cung cấp có nhiều đơn đặt hàng nhất và ở
Q1.Nếu tìm thấy thì xuất thông báo
Những nhà cung cấp có nhiều đơn đặt hàng nhất là: xuất kèm thông tin đầy đủ của nhà cung cấp đó
Nếu không thấy thì xuất „Không tìm thấy
if ( select count(*) from NHACC N,DONDH D where D.MANHACC=N.MANHACC and DIACHI like '%Q1%' )>0
order by count(D.SODH) desc end