1. Trang chủ
  2. » Công Nghệ Thông Tin

Thực hành Hệ quản trị cơ sơ dũ liệu SQL Server

55 993 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thực hành Hệ quản trị cơ sở dữ liệu SQL Server
Tác giả Ngô Tất Đạt
Trường học University of Information Technology - Vietnam National University Ho Chi Minh City
Chuyên ngành Information Technology
Thể loại Thực hành
Năm xuất bản 2023
Thành phố Ho Chi Minh City
Định dạng
Số trang 55
Dung lượng 0,97 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 2

Ngô 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 3

Tạ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 4

Ngô 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 5

Ngô 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 6

Ngô 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 7

Ngô 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 8

Yê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 9

dd-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 10

Ngô 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 11

Ngô 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 12

Ngô 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 13

group 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 14

view 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 15

Ngô 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 16

Ngô 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 17

where 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 18

order 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 19

Ngô 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 20

Ngô 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 21

Ngô 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 22

if 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 23

if 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 24

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

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 25

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

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 26

8 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 27

from 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

Ngày đăng: 08/05/2014, 17:30

TỪ KHÓA LIÊN QUAN

w