Thursday, January 7, 2016

Giải bài tập CSDL Bài toán quản lý sản phẩm(Đề CH ĐHQGHCM)

Giải bài tập CSDL Bài toán quản lý sản phẩm




USE MASTER
GO
DROP DATABASE CH_HT_QUAN_LY_SAN_PHAM
GO
CREATE DATABASE CH_HT_QUAN_LY_SAN_PHAM
GO
USE CH_HT_QUAN_LY_SAN_PHAM
GO
CREATE TABLE LOAISP
(
       MA_LOAI NVARCHAR(10) PRIMARY KEY,
       MO_TA NTEXT,
       HAN_LUU_KHO INT
)
GO
CREATE TABLE SANPHAM
(
       MA_SAN_PHAM NVARCHAR(10) PRIMARY KEY,
       TEN_SAN_PHAM NTEXT,
       MA_LOAI NVARCHAR(10)
)
GO
ALTER TABLE SANPHAM
ADD CONSTRAINT FK_LOAISANPHAM_SANPHAM FOREIGN KEY (MA_LOAI) REFERENCES LOAISP(MA_LOAI)
GO
CREATE TABLE PHIEUNHAPXUAT
(
       MA_SO_PHIEU NVARCHAR(10) PRIMARY KEY,
       NGAY_NHAP_XUAT DATETIME,
       LOAI_PHIEU NVARCHAR(10)
)
GO
CREATE TABLE CHITIETPHIEU
(
       MA_SO_PHIEU NVARCHAR(10) ,
       MA_SAN_PHAM NVARCHAR(10) ,
       SOLUONG INT,
       CONSTRAINT  FP_CHITIETPHIEU PRIMARY KEY (MA_SO_PHIEU,MA_SAN_PHAM)
)
GO
ALTER TABLE CHITIETPHIEU
ADD CONSTRAINT FK_KHOAHOC_SUDUNGTHIETBI FOREIGN KEY (MA_SO_PHIEU) REFERENCES PHIEUNHAPXUAT(MA_SO_PHIEU)
GO
ALTER TABLE CHITIETPHIEU
ADD CONSTRAINT FK_THIETBI_SUDUNGTHIETBI FOREIGN KEY (MA_SAN_PHAM) REFERENCES SANPHAM(MA_SAN_PHAM)
GO

INSERT INTO LOAISP VALUES('LO01',N'Dầu gội đầu',20);
INSERT INTO LOAISP VALUES('LO02',N'Gạo',10);
INSERT INTO LOAISP VALUES('LO03',N'Bột giặt',30);
INSERT INTO LOAISP VALUES('LO04',N'Đường',40);
GO
INSERT INTO SANPHAM VALUES('TM1',N'SUN SILK','LO01');
INSERT INTO SANPHAM VALUES('TM2',N'NO HAIR','LO01');
INSERT INTO SANPHAM VALUES('TM3',N'Gạo loại 1','LO02');
INSERT INTO SANPHAM VALUES('TM4',N'Gạo nàng hương','LO02');
INSERT INTO SANPHAM VALUES('TM5',N'Omo','LO03');
INSERT INTO SANPHAM VALUES('TM6',N'Tile','LO03');
INSERT INTO SANPHAM VALUES('TM7',N'Cát vàng','LO04');
INSERT INTO SANPHAM VALUES('TM8',N'Cát trắng','LO04');
INSERT INTO SANPHAM VALUES('TM9',N'Bột giặt','LO03');
GO
INSERT INTO PHIEUNHAPXUAT VALUES('PH01',1/1/2016,0);
INSERT INTO PHIEUNHAPXUAT VALUES('PH02',1/20/2016,1);
INSERT INTO PHIEUNHAPXUAT VALUES('PH03',1/3/2016,0);
INSERT INTO PHIEUNHAPXUAT VALUES('PH04',5/12/2016,1);
INSERT INTO PHIEUNHAPXUAT VALUES('PH05',9/21/2016,0);
INSERT INTO PHIEUNHAPXUAT VALUES('PH06',1/3/2016,1);
INSERT INTO PHIEUNHAPXUAT VALUES('PH07',1/6/2016,0);
INSERT INTO PHIEUNHAPXUAT VALUES('PH08',1/9/2016,1);
GO
INSERT INTO CHITIETPHIEU VALUES('PH01','TM1',10);
INSERT INTO CHITIETPHIEU VALUES('PH01','TM2',86);
INSERT INTO CHITIETPHIEU VALUES('PH02','TM2',8);
INSERT INTO CHITIETPHIEU VALUES('PH03','TM3',20);
INSERT INTO CHITIETPHIEU VALUES('PH04','TM4',300);
INSERT INTO CHITIETPHIEU VALUES('PH05','TM5',521);
INSERT INTO CHITIETPHIEU VALUES('PH06','TM6',30);
INSERT INTO CHITIETPHIEU VALUES('PH07','TM7',65);
INSERT INTO CHITIETPHIEU VALUES('PH08','TM8',69);
INSERT INTO CHITIETPHIEU VALUES('PH08','TM1',69);
INSERT INTO CHITIETPHIEU VALUES('PH08','TM9',49);
INSERT INTO CHITIETPHIEU VALUES('PH01','TM9',9);
GO
--1/ Đại số quan hệ
--A/Liệt kê các mã số phiếu trong các phiếu này có 2 mã sp là TM1 và TM2

SELECT MA_SO_PHIEU FROM CHITIETPHIEU
WHERE MA_SAN_PHAM IN ('TM1','TM2')
GROUP BY MA_SO_PHIEU
HAVING COUNT(MA_SAN_PHAM)>=2
--CACH 2

SELECT MA_SO_PHIEU FROM CHITIETPHIEU
WHERE MA_SAN_PHAM ='TM1'
AND  MA_SO_PHIEU IN (SELECT MA_SO_PHIEU FROM CHITIETPHIEU
WHERE MA_SAN_PHAM ='TM2')
--B/Liệt kê các mã số phiếu có sản phẩm tên là bột giặt

SELECT MA_SO_PHIEU
FROM CHITIETPHIEU TC INNER JOIN SANPHAM  SP ON TC.MA_SAN_PHAM=SP.MA_SAN_PHAM
WHERE TEN_SAN_PHAM LIKE N'Bột giặt'
---2 A/Mã sản phẩm, tên sản phẩm có khả năng giữ trong kho hơn 3 tuần

SELECT MA_SAN_PHAM,TEN_SAN_PHAM
FROM SANPHAM SP INNER JOIN LOAISP LSP ON SP.MA_LOAI=LSP.MA_LOAI
WHERE HAN_LUU_KHO>21
---B Liệt kê Mã số phiếu, Ngày nhập xuất phiếu này nhập nhiều hơn 2 loại sp

SELECT P.MA_SO_PHIEU,P.NGAY_NHAP_XUAT
FROM CHITIETPHIEU CT INNER JOIN PHIEUNHAPXUAT P ON CT.MA_SO_PHIEU=P.MA_SO_PHIEU
INNER JOIN SANPHAM SP ON SP.MA_SAN_PHAM =CT.MA_SAN_PHAM
WHERE P.LOAI_PHIEU=1
GROUP BY P.MA_SO_PHIEU,P.NGAY_NHAP_XUAT
HAVING COUNT(MA_LOAI)>=2




No comments:

Post a Comment