Bài Tập
Tuan 3 -Viết View
Tuan 4 -Viết Cursor
Tuan 5 -Viết SP
Tuan 6 -Viết Trigger
Tuan 7-Viết Function
------------------------------------VIEW-------------------
--Tuần 3
câu 1
--Cho biết danh số xuất từng mặt hàng trong 6 tháng đầu năm
create view cau_1
as
select TENMH,sum(DONGIAXUAT*SOLUONGXUAT) as [DOANH THU]
from HOA_DON_XUAT HD,CHI_TIET_XUAT CT,MAT_HANG MH
where HD.SOHDX=CT.SOHDX
and CT.MAMH=MH.MAMH
and year(getdate())=year(NGAYXUAT)
and month(NGAYXUAT)between 1 and 6
group by TENMH
-----------------------------------------------------------
câu 2
--Cho biết mặt hàng có doanh số lớn nhất
create view cau_2
as
select TENMH,sum(DONGIAXUAT*SOLUONGXUAT) as [MAX DOANH
THU]
from MAT_HANG MH,CHI_TIET_XUAT CT
where MH.MAMH=CT.MAMH
group by TENMH
having sum(DONGIAXUAT*SOLUONGXUAT)>=all(select
sum(DONGIAXUAT*SOLUONGXUAT)
create view cau_6
as
select *
from NHAN_VIEN
where MANV not in (select MANV
from HOA_DON_NHAP)
-----------------------------------------------------------
câu 7
--Cho biết những mặt hàng nhập chưa bao giờ bán
create view cau_7
as
select *
from MAT_HANG
where MAMH not in (select MAMH
from HOA_DON_NHAP)
---------------------------------------------------------câu
8
--Cho biết những nhà cung cấp cung ứng những mặt hàng giống
nhà cung cấp 1
create view cau_8
as
select TENNCC
from NHA_CUNG_CAP NCC,CHI_TIET_NHAP CT,MAT_HANG MH
where NCC.MANCC=MH.MANCC
and MH.MAMH=CT.MAMH
and MH.MAMH in (select MAMH
from NHA_CUNG_CAP NCC,MAT_HANG
MH
where NCC.MANCC=MH.MANCC
and NCC.MANCC=1)
-- khuyến mại 100 USD, mua 20 lần khuyến mại 200 USD.
Distinct: bo nhug ket qua trug nhau
--khai báo biến cục bộ
declare @MAKH char(6),@solan tinyint
--khai báo biến cursor
declare cur_khuyenmai cursor
dynamic
for
select distinct MAKH from HOA_DON_XUAT
--mở cursor
open cur_khuyenmai
--đọc dữ liệu
fetch first from cur_khuyenmai into @MAKH
while @@fetch_status=0
begin
select @solan=count(*)
from HOA_DON_XUAT
where @MAKH=MAKH
--print
select * from KHACH_HANG where @MAKH=MAKH
if @solan>=3
print 'Khách hàng: '+@MAKH+'được khuyến mãi
20% vì đã mua: '+cast(@solan as char(3))+'lần'
else
print 'Khách hàng: '+@MAKH+'được khuyến mãi
10% vì đã mua: '+cast(@solan as char(3))+'lần'
fetch next from cur_khuyenmai into @MAKH
end
--đóng cursor
close cur_khuyenmai
deallocate cur_SLMH
-----------------------------------------------------------
câu 3
--Thêm thuộc tính TongMH trong bang HoaDonNhap lưu thông tin
tổng số mặt hàng đã bán trong đơn hàng. Viết cursor cập
--nhật thông tin cho thuộc tính này.
alter table HOA_DON_NHAP add TONGMH int
declare @SOHDN char(6),@TONGMH int
declare cur_TMH cursor
forward_only
for
select distinct MAMH from MAT_HANG
open cur_TMH
fetch next from cur_TMH into @SOHDN
while @@fetch_status=0
begin
select TONGMH=sum(SOLUONGNHAP)
from MAT_HANG MH,CHI_TIET_NHAP CTN,HOA_DON_NHAP HDN
where MH.MAMH=CTN.MAMH
and HDN.SOHDN=CTN.SOHDN
and @SOHDN=HDN.SOHDN
print 'Dang cap nhat MAMH:'+@SOHDN
update HOA_DON_NHAP
set TONGMH=@TONGMH
where SOHDN=@SOHDN
fetch next from cur_TMH into @SOHDN
end
close cur_TMH
deallocate cur_TMH