hệ quản trị cơ sỡ dữ liệu bán vé xem phim
TRANSCRIPT
PHAÀN I: GIÔÙI THIEÄU - Trong các rạp chiếu phim hiện
nay, việc quản lý và tổ chức chiếu
phim, bán vé luôn là vấn đề được
quan tâm. Người quản lý luôn gặp
khó khăn trong vấn đề quản lý quá
trình hoạt động của từng bộ phận
như: phim, lịch chiếu, trang thiết
bị… và đặc biệt là quá trình bán vé.
- Chức năng: Hệ thống quản lý
rạp chiếu phim được xây dựng dựa
trên những nhu cầu thực tế của khách hàng và nhà quản lý nhằm giải quyết
những khó khăn gặp phải, giảm thiểu rủi ro trong quá trình quản lý rạp. Hệ
thống hướng tới các đối tượng là khách hàng và những nhân viên quản lý
trong rạp. Hệ thống có các chức năng chính bao gồm: quản lý phim, quản
lý lịch chiếu, quản lý phòng chiếu, quản lý vé, đặt vé, quản lý người dùng
và quản lý thông tin khách hàng. Các chức năng này giúp người quản lý dễ
dàng điều khiển quá trình hoạt động của rạp và rất thuận tiện để khách hàng
có thể mua được vé.
PHAÀN II: TAÏO BAÛNG – NHAÄP DÖÕ LIEÄU
1. Taïo baûng - Gồm 9 bảng: Chi tiết chiếu phim, Phim, Vé , Dạng phim, Loại phim,
Khách hàng, Nhân viên, Loại vé, Phòng chiếu phim.
Bảng: Chi tiết chiếu phim
- Câu lệnh trONg SQL:
CREATE TABLE ChiTietChieuPhim
(
MaVe CHAR(10) not null,
MaPhong CHAR(10) not null,
MaPhim CHAR(10) not null,
XuatChieu DATETIME,
CONSTRAINT PK_ChiTietChieuPhim_MaVe PRIMARY KEY
(MaVe)
)
Bảng: Phim
- Câu lệnh trONg SQL:
Bảng: Vé
- Câu lệnh trONg SQL:
CREATE TABLE Phim
(
MaPhim CHAR(10) not null,
MaLP CHAR(10) not null,
MaDP CHAR(10) not null,
TenPhim NVARCHAR(100) not null,
NSX DATETIME(100) not null,
CONSTRAINT PK_Phim_MaPhim PRIMARY KEY(MaPhim)
)
CREATE TABLE Ve
(
MaVe CHAR(10) not null,
MaLV CHAR(10) not null,
MaNV CHAR(10) not null,
MaKH CHAR(10) not null,
Ghe INT,
NgayBanVe DATETIME,
CONSTRAINT PK_Ve_Mave PRIMARY KEY(Mave)
)
Bảng: Dạng phim
- Câu lệnh trONg SQL:
Bảng: Loại phim
- Câu lệnh trONg SQL:
Bảng: Khách hàng
- Câu lệnh trONg SQL:
CREATE TABLE DangPhim
(
MaDP CHAR(10) not null,
DangPhim NVARCHAR(100) not null,
CONSTRAINT PK_DangPhim_MaDP PRIMARY KEY (MaDP)
)
CREATE TABLE LoaiPhim
(
MaLP CHAR(10) not null,
LoaiPhim NVARCHAR(100) not null,
CONSTRAINT PK_LoaiPhim_MaLP PRIMARY KEY (MaLP)
)
Bảng: Nhân viên
- Câu lệnh trONg SQL:
Bảng: Loại vé
- Câu lệnh trONg SQL:
Bảng: Phòng chiếu phim
CREATE TABLE KhachHang
(
MaKH CHAR(10) not null,
Hoten NVARCHAR(100) not null,
DiaChi NVARCHAR(100) not null,
SDT CHAR(100) not null,
NgaySinh DATETIME,
CONSTRAINT PK_Khachhang_MaKH PRIMARY KEY (MaKH)
)
CREATE TABLE NhanVien
(
MaNV CHAR(10) not null,
Hoten NVARCHAR(100) not null,
Diachi NVARCHAR(100) not null,
SDT CHAR(20) not null,
Ngaysinh DATETIME,
Phai NVARCHAR(10) not null,
CONSTRAINT PK_Nhanvien_MaNV PRIMARY KEY (MaNV)
)
CREATE TABLE LoaiVe
(
MaLV CHAR(10) not null,
TenLV NVARCHAR(10) not null,
DonGia INT,
CONSTRAINT PK_LoaiVe_MaLV PRIMARY KEY (MaLV)
)
- Câu lệnh trONg SQL:
**Cuối cùng là tạo các khóa ngoại tham chiếu đến các bảng. Tuân thủ theo quy
tắc là tham chiếu từ nhiều sang ít. Các câu lệnh tạo khóa ngoại trONg SQL:
- Bảng Vé tham chiếu:
- Bảng Chi tiết chiếu phim tham chiếu:
- Bảng Phim tham chiếu:
CREATE TABLE PhongChieu
(
MaPhong CHAR(10) not null,
TenPhong NVARCHAR(100) not null,
CONSTRAINT PK_PhongChieu_MaPhong PRIMARY KEY(MaPhong)
)
ALTER TABLE Ve ADD CONSTRAINT FK_Ve_LoaiVe
FOREIGN KEY (MaLV) REFERENCES Loaive(MaLV)
ALTER TABLE Ve ADD CONSTRAINT FK_Ve_NhanVien
FOREIGN KEY (MaNV) REFERENCES NhanVien(MaNV)
ALTER TABLE Ve ADD CONSTRAINT FK_Ve_KhachHang
FOREIGN KEY (MaKH) REFERENCES KhachHang(MaKH)
ALTER TABLE Ve ADD CONSTRAINT FK_Ve_ChiTietChieuPhim
FOREIGN KEY (MaVe) REFERENCES
ChiTietChieuPhim(MaVe)
ALTER TABLE ChiTietChieuPhim ADD CONSTRAINT
FK_ChiTietChieuPhim_PhongChieu
FOREIGN KEY (MaPhong) REFERENCES
PhongChieu(MaPhong)
ALTER TABLE ChiTietChieuPhim ADD CONSTRAINT
FK_ChiTietChieuPhim_Phim
FOREIGN KEY (MaPhim) REFERENCES Phim(MaPhim)
ALTER TABLE ChiTietChieuPhim ADD CONSTRAINT
FK_ChiTietChieuPhim_PhongChieu
FOREIGN KEY (MaPhong) REFERENCES
PhongChieu(MaPhong)
ALTER TABLE ChiTietChieuPhim ADD CONSTRAINT
FK_ChiTietChieuPhim_Phim
FOREIGN KEY (MaPhim) REFERENCES Phim(MaPhim)
2. NHAÄP DÖÕ LIEÄU - Đối với quá trình nhập dữ liệu bằng câu lệnh thì ta chú ý đến việc
nhập bảng nào trước, bảng nào nhập sau. Nếu không sẽ bị lỗi. quá trình
nhập bắt đầu từ: Loại phim, Dạng phim, Phim, Phòng chiếu, Nhân viên,
Khách hàng, Chi tiết chiếu phim, Loại vé và cuối cùng là Vé.
1. Loại Phim
Kết quả:
INSERT INTO LoaiPhim VALUES ('LP01',N'Kinh Dị')
INSERT INTO LoaiPhim VALUES ('LP02',N'Hành Ðộng')
INSERT INTO LoaiPhim VALUES ('LP03',N'Tình Cảm')
INSERT INTO LoaiPhim VALUES ('LP04',N'Kiếm Hiệp')
INSERT INTO LoaiPhim VALUES ('LP05',N'Khoa Học Viễn Tưởng')
INSERT INTO LoaiPhim VALUES ('LP06',N'Tài Liệu')
INSERT INTO LoaiPhim VALUES ('LP07',N'Phim Hài')
2. Phim
Kết quả:
3. Phòng chiếu
INSERT INTO Phim VALUES ('MP01','LP01','DP02',N'Ngôi Nhà Số
10',N'Tepysocola')
INSERT INTO Phim VALUES ('MP02','LP02','DP01',N'12 Con
Giap','Kerberlux')
INSERT INTO Phim VALUES ('MP03','LP03','DP01',N'Chuyện Tình Mùa
Thu','Keypopy')
INSERT INTO Phim VALUES ('MP04','LP03','DP01',N'Ngôi Nhà Hạnh
Phúc','Brain')
INSERT INTO Phim VALUES ('MP05','LP05','DP02',N'Ngày Tận
Thế','Hollywold')
INSERT INTO Phim VALUES ('MP06','LP06','DP05',N'Chiến Trường Ðiện Biên
Phủ','SaiGonFilm')
INSERT INTO Phim VALUES ('MP07','LP07','DP01',N'Biết Chết Liền',N'My
Nguyễn')
INSERT INTO Phim VALUES ('MP08','LP01','DP01',N'Chơi
Ngãi','Pupachila')
INSERT INTO Phim VALUES ('MP09','LP03','DP01',N'Nấc Thang Len Thien
Ðường','Kypopupi')
INSERT INTO Phim VALUES ('MP010','LP02','DP01',N'Ðiệp Vien
007',N'Helequaly')
INSERT INTO PhongChieu VALUES ('PC01',N'Phòng 1')
INSERT INTO PhongChieu VALUES ('PC02',N'Phòng 2')
INSERT INTO PhongChieu VALUES ('PC03',N'Phòng 3')
INSERT INTO PhongChieu VALUES ('PC04',N'Phòng 4')
INSERT INTO PhongChieu VALUES ('PC05',N'Phòng 5')
INSERT INTO PhongChieu VALUES ('PC06',N'Phòng 6')
Kết quả:
4. Nhân Viên
5. Chi tiết phim
INSERT INTO NHANVIEN VALUES ('MaNV01',N'Le Thái Trần',N'20 Le
Duẩn,Quận Gò Vấp,TPHCM','0165538970','04/24/1980',N'Nữ')
INSERT INTO NHANVIEN VALUES ('MaNV02',N'Ðồng Quốc Cỏ',N'26B Tân
Phú,Quận Tân Bình,TPHCM','0934179463','07/14/1982',N'Nam')
INSERT INTO NHANVIEN VALUES ('MaNV03',N'Nguyễn Tuấn Anh',N'12/34
Nguyễn Oanh,Quận Gò Vấp,TPHCM','0126356784','09/11/1983',N'Nam')
INSERT INTO NHANVIEN VALUES ('MaNV04',N'Nguyễn Thu Hồng',N'01 Lý
Thường Kiệt,Quận 12,TPHCM','0188534678','11/25/1980',N'Nữ')
INSERT INTO NHANVIEN VALUES ('MaNV05',N'Trần Thu Hà ',N'125 Le Hồng
Thái,Quận 8,TPHCM','0165343970','08/21/1984',N'Nữ')
INSERT INTO NHANVIEN VALUES ('MaNV06',N'Phạm Thị Cẩm Phýợng',N'27A Le
Thái Sõn,Quận 1,TPHCM','096544680','09/07/1981',N'Nữ')
INSERT INTO NHANVIEN VALUES ('MaNV07',N'Le Huỳnh Bảo Tôn',N'13/34
Quang Trung,Quận 3,TPHCM','012258970','02/21/1983',N'Nam')
INSERT INTO NHANVIEN VALUES ('MaNV08',N'Nguyễn Thị Thanh Thu',N'60
Phan Vãn Trị,Quận Tân Bình,TPHCM','0188521970','01/10/1983',N'Nữ')
INSERT INTO NHANVIEN VALUES ('MaNV09',N'Hoàng Thu Hiền',N'46/12 Hà Huy
Hùng,Quận 9,TPHCM','0165633270','03/11/1984',N'Nữ')
INSERT INTO NHANVIEN VALUES ('MaNV010',N'Le Thành Ân',N'56 Nguyễn Vãn
Nghi,Quận 4,TPHCM','096234562','12/24/1981',N'Nam')
INSERT INTO ChiTietChieuPhim VALUES ('V01','PC01','MP01','2/5/2013')
INSERT INTO ChiTietChieuPhim VALUES ('V02','PC02','MP02','4/10/2012')
INSERT INTO ChiTietChieuPhim VALUES ('V03','PC03','MP02','2/2/2013')
INSERT INTO ChiTietChieuPhim VALUES ('V04','PC04','MP03','6/5/2012')
INSERT INTO ChiTietChieuPhim VALUES ('V05','PC01','MP01','6/10/2012')
INSERT INTO ChiTietChieuPhim VALUES ('V06','PC03','MP03','12/5/2012')
INSERT INTO ChiTietChieuPhim VALUES ('V07','PC04','MP06','1/6/2011')
INSERT INTO ChiTietChieuPhim VALUES ('V08','PC01','MP02','2/23/2010')
INSERT INTO ChiTietChieuPhim VALUES ('V09','PC02','MP01','3/15/2012')
INSERT INTO ChiTietChieuPhim VALUES ('V010','PC03','MP05','7/25/2012')
INSERT INTO ChiTietChieuPhim VALUES ('V011','PC04','MP02','2/22/2012')
INSERT INTO ChiTietChieuPhim VALUES ('V012','PC01','MP03','7/29/2012')
INSERT INTO ChiTietChieuPhim VALUES ('V013','PC05','MP02','8/27/2011')
INSERT INTO ChiTietChieuPhim VALUES ('V014','PC02','MP03','2/24/2010')
INSERT INTO ChiTietChieuPhim VALUES ('V015','PC03','MP04','3/27/2011')
Kết quả:
6. Khách Hàng
Kết quả:
INSERT INTO KhachHang VALUES ('MaKH01',N' Ðồng Quốc Tiến',N'26A Lý
Thường Kiệt,Quận 2 ,TP Hồ Chí Minh','0123456778','7/20/1972')
INSERT INTO KhachHang VALUES ('MaKH02',N' Huỳnh Thị Anh Thý',N'36/27
Nguyễn Vãn Lượngng,Quận Gò Vấp ,TP Hồ Chí
Minh','0671839302','11/2/1991')
INSERT INTO KhachHang VALUES ('MaKH03',N' Nguyễn Ngọc Giang',N'Ký túc
Xá lam Sơn, Quận Gò Vấp ,TP Hồ Chí Minh','0999993456','1/1/1945')
INSERT INTO KhachHang VALUES ('MaKH04',N' Bùi Ngọc ',N' Nguyễn
Kiệm,Quận 6,TP Hồ Chí Minh','01346678899','1/11/1937')
INSERT INTO KhachHang VALUES ('MaKH05',N' Dýõng Thúy',N'Chợ Gò Vấp ,TP
Hồ Chí Minh','0597356778','09/09/1992')
INSERT INTO KhachHang VALUES ('MaKH06',N' Nguyễn Sáu',N' Quận Bình Tân
,TP Hồ Chí Minh','0198765443','12/12/1972')
INSERT INTO KhachHang VALUES ('MaKH07',N' Ðồng Quốc Tiến',N'27B Âu
Cõ,Quận 5 ,TP Hồ Chí Minh','0945566677','12/29/1972')
INSERT INTO KhachHang VALUES ('MaKH08',N' Trần Quốc Tuấn',N'26A Nguyễn
Du,Quận 6 ,TP Hồ Chí Minh','0122890378','7/27/1976')
INSERT INTO KhachHang VALUES ('MaKH09',N' Lýõng Thế Thành',N'26A Lý
Thái Sõn,Quận 2 ,TP Hồ Chí Minh','059156778','7/29/1971')
INSERT INTO KhachHang VALUES ('MaKH10',N' Ðồng Quốc Tiến',N'26A Lý
Thái Tổ,Quận 9 ,TP Hồ Chí Minh','0125916778','8/8/1971')
INSERT INTO KhachHang VALUES ('MaKH19',N' Cao Quốc Tiến',N'Ngã 6,
Nguyễn Oanh, Quận Gò Vấp ,TP Hồ Chí Minh','0109274778','11/7/1993')
INSERT INTO KhachHang VALUES ('MaKH20',N' Ðồ Thành Tiến',N'Ngã Tý Ga,
Nguyễn Oanh, Quận Gò Vấp ,TP Hồ Chí Minh','0974545878','9/7/1979')
7. Loại Vé
Kết quả:
8. Vé
INSERT INTO LoaiVe VALUES ('LV01',N'VIP',200000)
INSERT INTO LoaiVe VALUES ('LV02',N'Thường',150000)
INSERT INTO LoaiVe VALUES ('LV03',N'Khuyến Mãi',100000)
INSERT INTO Ve VALUES ('V01','LV01','MaNV01','MaKH01',100,'2/10/2013')
INSERT INTO Ve VALUES ('V02','LV01','MaNV02','MaKH02',101,'5/10/2013')
INSERT INTO Ve VALUES ('V03','LV02','MaNV03','MaKH03',103,'3/1/2013')
INSERT INTO Ve VALUES ('V04','LV01','MaNV01','MaKH04',104,'4/16/2013')
INSERT INTO Ve VALUES ('V05','LV02','MaNV02','MaKH05',108,'6/21/2012')
INSERT INTO Ve VALUES ('V06','LV02','MaNV04','MaKH06',109,'7/30/2012')
INSERT INTO Ve VALUES ('V07','LV03','MaNV01','MaKH07',110,'8/10/2012')
INSERT INTO Ve VALUES ('V08','LV02','MaNV02','MaKH08',111,'9/12/2012')
INSERT INTO Ve VALUES ('V09','LV02','MaNV01','MaKH09',112,'10/22/2012')
INSERT INTO Ve VALUES ('V010','LV01','MaNV02','MaKH10',103,'11/10/2012')
INSERT INTO Ve VALUES ('V011','LV01','MaNV06','MaKH03',109,'12/12/2012')
INSERT INTO Ve VALUES ('V012','LV02','MaNV02','MaKH04',90,'07/12/2011')
INSERT INTO Ve VALUES ('V013','LV03','MaNV03','MaKH06',131,'2/11/2012')
INSERT INTO Ve VALUES ('V014','LV01','MaNV04','MaKH02',113,'09/18/2010')
INSERT INTO Ve VALUES ('V015','LV01','MaNV04','MaKH09',102,'12/20/2011')
Kết quả:
9. Dạng Phim
Kết quả:
3. Khung nhìn - view 1. Ðưa ra danh sách khách hàng có vé VIP trONg phòng chiếu số 2.Gồm các
thông tin: Mã KH, Họ tên Khách hàng, Mã vé, Số ghế.
INSERT INTO DangPhim VALUES ('DP01',N'2D')
INSERT INTO DangPhim VALUES ('DP02',N'3D')
INSERT INTO DangPhim VALUES ('DP03',N'4D')
INSERT INTO DangPhim VALUES ('DP05',N'Trắng Đen')
SELECT DISTINCT a.MaKH,HoTen,b.MaVe,Ghe
FROM (((KhachHang a INNER JOIN Ve b ON
a.MaKH=b.MaKH)
INNER JOIN LoaiVe c ON b.MaLV=c.MaLV)
INNER JOIN ChiTietChieuPhim d ON b.MaVe=d.MaVe)
INNER JOIN PhongChieu e ON d.Maphong=d.MaPhong
WHERE TenLV =N'VIP' AND TenPhong =N'Phòng 2'
Xuất:
2. Tổng doanh thu các vé bán được.
Xuất:
3. Ðưa ra danh sách các phim được trình chiếu trong trong 6 đầu năm. Gồm
thông tin: Mã phim, Tên phim, Loại phim, Dạng phim, Nhà sản xuất
SELECT DISTINCT a.MaPhim,a.TenPhim,b.LoaiPhim,c.DangPhim,NSX
FROM ((Phim a INNER JOIN LoaiPhim b ON a.MaLP=b.MaLP)
INNER JOIN DangPhim c ON a.MaDP=c.MaDP)
INNER JOIN ChiTietChieuPhim d ON a.MaPhim=d.MaPhim
WHERE MONTH(XuatChieu)<=6
Xuất:
SELECT SUM(b.DonGia) AS 'Tổng thu' FROM Ve a
INNER JOIN LoaiVe b
ON a.MaLV=b.MaLV
4. Viết các câu lệnh đưa ra danh sách nhân viên sắp xếp theo tuổi giảm dần
gồm các thông tin: Mã NV, Tên NV, Tuổi
SELECT MaNV,HoTen,YEAR(GETDATE())-YEAR(Ngaysinh)AS 'Tuoi'
FROM NhanVien
ORDER BY YEAR(GETDATE())-YEAR(Ngaysinh)DESC
Xuất:
5. Viết các câu lệnh đưa ra danh sách nhân viên có tuổi >30, sắp xếp tuổi
giảm dần. Gồm các thông tin: Mã NV, Tên NV, Tuổi
SELECT MaNV,HoTen,YEAR(GETDATE())-YEAR(NgaySinh)AS'Tuoi'
FROM NhanVien
WHERE YEAR(GETDATE())-YEAR(NgaySinh)>30
ORDER BY Tuoi DESC
Xuất:
6. Viết các câu lệnh đưa ra danh sách có khách hàng có vé khuyến mãi và
có họ 'Nguyễn'. Gồm các thông tin: Mã KH, Họ tên, Địa chỉ, Tuổi, Mã
vé, Đơn giá. SELECT b.MaKH,Hoten,DiaChi,TenLV,YEAR(GETDATE())-
YEAR(ngaysinh)AS'Tuoi'
FROM ((Ve a INNER JOIN KhachHang b ON a.MaKH=b.MaKH)
INNER JOIN LoaiVe c ON a.MaLV=c.MaLV)
WHERE Hoten like N' Nguyễn%'AND TenLV =N'Thường'
Xuất:
7. Viết câu lệnh có danh sách khách hàng có tuổi >50 coi phim tình cảm
gồm các thông tin sau: Mã KH, Họ tên KH, Tuổi, Mã vé, Mã phim, Xuất
chiếu, Tên phim
SELECT b.MaKH,Hoten,YEAR(GETDATE())-
YEAR(NgaySinh)AS'Tuoi',TenPhim,LoaiPhim
FROM ((((Ve a INNER JOIN KhachHang b ON a.MaKH=b.MaKH)
INNER JOIN ChiTietChieuPhim c ON a.MaVe=c.MaVe)
INNER JOIN Phim d ON c.MaPhim =d.MaPhim)
INNER JOIN LoaiPhim e ON e.MaLP=d.MaLP)
WHERE YEAR(GETDATE())-YEAR(NgaySinh)>50 AND LoaiPhim= N'Tình
Cảm'
Xuất:
8. Liệt kê ra phim được nhiều người xem nhất. Gồm: Mã Phim, Tên Phim,
Số lượng
SELECT b.MaPhim,TenPhim,COUNT(b.MaVe)AS'so luong nguoi xem'
FROM Phim a INNER JOIN ChiTietChieuPhim b ON
a.MaPhim=b.MaPhim
GROUP BY b.MaPhim, a.TenPhim
HAVING
COUNT(b.MaVe)=(SELECT TOP 1 COUNT(b.MaVe)
FROM Phim a INNER JOIN ChiTietChieuPhim b ON
a.MaPhim=b.MaPhim GROUP BY b.MaPhim, a.TenPhim
ORDER BY COUNT(b.MaVe) DESC)
Xuất:
9. Liệt kê ra phim được ít người xem nhất và phim được nhiều người xem
nhất. Gồm: Mã Phim, Tên Phim, Số lượng
SELECT b.MaPhim,TenPhim,COUNT(b.MaVe)AS 'so luong nguoi xem'
FROM Phim a INNER JOIN ChiTietChieuPhim b ON
a.MaPhim=b.MaPhim
GROUP BY b.MaPhim, a.TenPhim
HAVING
COUNT(b.MaVe)= (SELECT TOP 1 COUNT(b.MaVe)
FROM Phim a INNER JOIN ChiTietChieuPhim b ON
a.MaPhim=b.MaPhim GROUP BY b.MaPhim, a.TenPhim
ORDER BY COUNT(b.MaVe) ASC)
OR
COUNT(b.MaVe)=(SELECT TOP 1 COUNT(b.MaVe)
FROM Phim a INNER JOIN ChiTietChieuPhim b ON
a.MaPhim=b.MaPhim GROUP BY b.MaPhim, a.TenPhim
ORDER BY COUNT(b.MaVe) DESC)
Xuất:
10. Liệt kê ra những nhân viên không bán được vé nào. Gồm: MãNV,
TênNV, SĐT
SELECT MaNV, Hoten, SĐT FROM NhanVien
WHERE MaNV NOT IN (SELECT b.MaNV
FROM Ve a INNER JOIN NhanVien b ON a.MaNV=b.MaNV)
Xuất:
11. Liệt kê ra những nhân viên bán được vé và đếm số vé mà họ bán được:
MãNV, TênNV, Số vé bán
SELECT b.MaNV,b.Hoten,COUNT(a.MaVe)AS'so luong ve ban'
FROM Ve a INNER JOIN NhanVien b ON a.MaNV = b.MaNV
GROUP BY b.MaNV ,b.Hoten
Xuất:
12. Liệt kê,đếm và tính số tiền của từng loại vé. Gồm: Mã LV, Tên LV, Số
lượng bán,Số tiền
SELECT a.MaLV,TenLV, COUNT(a.MaVe)AS'Số bán',SUM(b.DonGia) AS
'tongthu'
FROM Ve a INNER JOIN LoaiVe b ON a.MaLV=b.MaLV
GROUP BY a.MaLV,TenLV
Xuất:
13. Liệt kê, đếm và in ra số lượng vé bán được nhiều nhất và ít nhất. Gồm:
Tên loại vé, Mã loại vé.
SELECT TenLV,b.MaLV, COUNT(MaVe) AS 'Số bán'
FROM Ve a INNER JOIN LoaiVe b ON a.MaLV=b.MaLV
GROUP BY TenLV,b.MaLV
HAVING
COUNT(MaVe) = (SELECT TOP 1 COUNT(MaVe)
FROM Ve a INNER JOIN LoaiVe b ON a.MaLV=b.MaLV
GROUP BY TenLV,b.MaLV ORDER BY COUNT(MaVe))
OR
COUNT(MaVe) = (SELECT TOP 1 COUNT(MaVe)
FROM Ve a INNER JOIN LoaiVe b ON a.MaLV=b.MaLV GROUP BY
TenLV,b.MaLV ORDER BY COUNT(MaVe) DESC)
Xuất:
14. Liệt ra danh sách khách hàng xem trên 2 lần. Gồm: Mã KH, Họ tên, Số
lần xem, Ðịa chỉ, SÐT.
SELECT a.MaKH, Hoten,COUNT(MaVe) AS N'Số lần xem', DiaChi,SDT
FROM Ve a INNER JOIN KhachHang b ON a.MaKH=b.MaKH
GROUP BY a.MaKH, Hoten,DiaChi,SDT HAVING COUNT(MaVe)>=2
Xuất:
15. Liệt kê ra loại phim không xem lần nào. Gồm : Mã Phim, Tên Phim.
SELECT MaPhim,TenPhim,NSX FROM Phim
WHERE MaPhim NOT IN (SELECT MaPhim FROM ChiTietChieuPhim)
Xuất:
4. HAØM VIEW – KHUNG NHÌN
1.VIEW thông tin về doanh thu từng loại vé
CREATE VIEW DOANHTHU AS
SELECT
a.MaLV,COUNT(a.MaVe)AS'Soluong',SUM(b.DonGia)AS'tongthu'
FROM Ve a INNER JOIN LoaiVe b
ON a.MaLV=b.MaLV
GROUP BY a.MaLV
SELECT * FROM DOANHTHU
2.VIEW thông tin khách hàng: mã KH,tên, Địa chỉ, sđt, tuổi, mã vé,số ghế,
tên phim xem, phòng xem
CREATE VIEW TTKHACHHANG AS
SELECT a.MaKH, a.Hoten,a.DiaChi,a.SDT,
YEAR(GETDATE())-YEAR(ngaysinh) AS 'tuoi',
b.MaVe,b.Ghe,d.TenPhim,e.TenPhong
FROM (((KhachHang a INNER JOIN Ve b ON a.MaKH=b.MaKH)
INNER JOIN ChiTietChieuPhim c ON b.MaVe=c.MaVe)
INNER JOIN Phim d ON c.MaPhim=d.MaPhim)
INNER JOIN PhongChieu e ON c.MaPhong=e.MaPhong
SELECT * FROM TTKHACHHANG
3. VIEW thông tin các phim : mã phim, tên phim, loại phim, dạng phim,nsx
CREATE VIEW TTPHIM AS
SELECT DISTINCT
a.MaPhim,a.TenPhim,b.LoaiPhim,c.DangPhim,a.NSX
FROM (Phim a INNER JOIN LoaiPhim b ON a.MaLP=b.MaLP)
INNER JOIN DangPhim c ON a.MaDP=c.MaDP
SELECT * FROM TTPHIM
4. VIEW thông tin phim đã được trình chiếu: mã phim, tên phim, loại
phim, dạng phim, nsx, phòng chiếu, ngày xuất chiếu.
CREATE VIEW TTPHIMDACHIEU AS
SELECT DISTINCT
a.MaPhim,a.TenPhim,b.LoaiPhim,c.DangPhim,a.NSX,d.XuatChieu,e.T
enPhong
FROM (((Phim a INNER JOIN LoaiPhim b ON a.MaLP=b.MaLP)
INNER JOIN DangPhim c ON a.MaDP=c.MaDP)
INNER JOIN ChiTietChieuPhim d ON a.MaPhim=d.MaPhim)
INNER JOIN PhongChieu e ON e.MaPhong=d.MaPhong
SELECT * FROM TTPHIMDACHIEU
--cai nay dung de dem phim chieu nhieu,it nhat
5.VIEW thông tin nhân viên bán được vé: maNV,tên,ðịa chỉ,sđt, tuổi, số
lượng vé bán
CREATE VIEW TTNVBANVE AS
SELECT a.MaNV, a.Hoten,a.Diachi,a.SDT,
YEAR(GETDATE())-YEAR(Ngaysinh)AS 'tuoi',COUNT (b.MaVe) AS
'soluongveban'
FROM NhanVien a INNER JOIN Ve b ON a.MaNV=b.MaNV
GROUP BY a.MaNV,a.Hoten,a.Diachi,a.SDT,a.NgaysINh
SELECT * FROM TTNVBANVE
SELECT * FROM TTNVBANVE WHERE soluongveban>3
--dung de tim nv co doanh thu cao de khen thuong
6.VIEW thông tin phim: Mã Phim, Tên Phim, Dạng Phim, Loại Phim, Số
lượt xem
CREATE VIEW LUOTXEMPHIM AS
SELECT b.MaPhim,b.TenPhim,c.LoaiPhim,d.DangPhim,COUNT(a.MaVe)
AS
'soluotxem'
FROM ((ChiTietChieuPhim a INNER JOIN Phim b ON
a.MaPhim=b.MaPhim)
INNER JOIN LoaiPhim c ON b.MaLP=c.MaLP)
INNER JOIN DangPhim d ON b.MaDP=d.MaDP
GROUP BY b.MaPhim,b.TenPhim,c.LoaiPhim,d.DangPhim
SELECT * FROM LUOTXEMPHIM
7.VIEW thông tin tất cả các nhân viên gồm:Mã NV, Tên NV,Ðịa Chỉ, SÐT,
Tuổi, Phái
CREATE VIEW TTNHANVIEN AS
SELECT MaNV,HoTen,Diachi,SDT,YEAR(GETDATE())-YEAR(Ngaysinh)AS
'tuoi',Phai
FROM NhanVien
SELECT * FROM TTNHANVIEN
8.VIEW thông tin vé Khách Hàng:Mã Vé, Loại Vé, Ðơn Gía,Tên KH, Phim
Xem, Phòng Chiếu, Loại Phim, Dạng Phim
CREATE VIEW TTVE AS
SELECT a.MaVe,b.TenLV,b.DonGia,h.Hoten,TenPhim,e.LoaiPhim,
f.DangPhim,g.TenPhong
FROM ((((((Ve a INNER JOIN LoaiVe b ON a.MaLV=b.MaLV)
INNER JOIN ChiTietChieuPhim c ON a.MaVe=c.MaVe)
INNER JOIN Phim d ON c.MaPhim=d.MaPhim)
INNER JOIN LoaiPhim e ON d.MaLP=e.MaLP)
INNER JOIN DangPhim f ON f.MaDP=d.MaDP)
INNER JOIN PhongChieu g ON g.MaPhong=c.MaPhong)
INNER JOIN KhachHang h ON h.MaKH=a.MaKH
SELECT * FROM TTVE
9.VIEW thông tin phòng phim: Mã Phòng, Tên Phòng, Phim chiếu, Ngày
chiếu, số người xem
CREATE VIEW TTPHONG AS
SELECTa.TenPhONg,c.TenPhim,b.XuatChieu,COUNT(b.MaVe)AS
‘Songuoixem'
FROM (PhongChieu a INNER JOIN ChiTietChieuPhim b ON
a.MaPhong=b.MaPhong)
INNER JOIN Phim c ON b.MaPhim=c.MaPhim
GROUP BY a.TenPhong,c.TenPhim,b.XuatChieu
SELECT * FROM TTPHONG
10.VIEW chi tiết chiếu phim: Mã Phim, Tên Phim, Phòng Chiếu, Ngày
Chiếu CREATE VIEW CTCHIEU AS
SELECT a.MaPhim, b.TenPhim,c.TenPhong,a.XuatChieu
FROM (ChiTietChieuPhim a INNER JOIN Phim b
ON a.MaPhim=b.MaPhim)
INNER JOIN PhongChieu c ON A.MaPhong=C.MaPhong
SELECT * FROM CTCHIEU
5. Haøm thuû tuïc - procedure
CÂU1: THÊM Khách Hàng vào bảng KhachHang
CREATE PROCEDURE NHAPKH
@MaKH char(10),
@HoTen NVARCHAR(100),
@Diachi NVARCHAR(100),
@SDT char(20),
@Ngaysinh datetime
AS
BEGIN
INSERT INTO KhachHang VALUES
(@MaKH,@HoTen,@Diachi,@SDT,@Ngaysinh)
END
GO
EXECUTE NHAPKH 'MaKH11', N'THU',N'TP','01234','9/21/1994'
CÂU 2:THÊM vào bảng Loại Vé
CREATE PROC NHAPLV
@MaLV NVARCHAR (10),
@TenLV NVARCHAR(100),
@Dongia int
AS
BEGIN
INSERT INTO LoaiVe VALUES (@MaLV,@TenLV,@Dongia)
END
GO
EXECUTE NHAPLV 'LV04',N'Vé Mời',0
CÂU 3:THÊM phim vào bảng Phim
CREATE PROC NHAPPHIM
@MaPhim char(10),
@MaLP char(10),
@MaDP char (10),
@TenPhim NVARCHAR(100),
@NSX NVARCHAR(100)
AS
BEGIN
INSERT INTO Phim
VALUES(@MaPhim,@MaLP,@MaDP,@TenPhim,@NSX)
END
GO
EXECUTE NHAPPHIM 'MP11','LP02','DP03',N'PHI CƠ',N'ANHTHU'
CÂU 4 :SỬA thông tin Khách Hàng tùy ý
CREATE PROC SUAKH
@MaKH char(10),
@HoTen NVARCHAR (100),
@Diachi NVARCHAR(100),
@SDT char(20),
@NgaySinh datetime
AS
BEGIN
UPDATE KhachHang SET
Hoten=@HoTen,DiaChi=@DiaChi,SDT=@SDT,NgaySinh=@NgaySinh
FROM KhachHang
WHERE MaKH = @MaKH
END
GO
EXECUTE SUAKH @MaKH='MaKH09',@HoTen= N'HUỲNH THƯ',
@Diachi=N'TP',@SDT='01234',@NgaySinh='9/21/1994'
CÂU 5 :SỬA thông tin một Nhân Viên tùy ý
CREATE PROC SUANV
@MaNV char(10),
@HoTen NVARCHAR (100),
@Diachi NVARCHAR(100),
@SDT char(20),
@Ngaysinh datetime,
@Phai NVARCHAR(10)
AS
BEGIN
UPDATE NhanVien SET
Hoten=@HoTen,Diachi=@Diachi,SDT=@SDT,Ngaysinh=@Ngaysinh,Phai=@
Phai
FROM NhanVien
WHERE MaNV = @MaNV
END
GO
EXECUTE SUANV @MaNV='MaNV09',@HoTen= N'HUỲNH ANH
THƯ',@Diachi=N'TP',
@SDT='0123423',@NgaySinh='10/21/1994',@Phai=N'NỮ'
CÂU 6:SỬA thông tin một Phim tùy ý
CREATE PROC SUAphim
@MaPhim char(10),
@MaLP char (10),
@MaDP char(10),
@TenPhim NVARCHAR(100),
@NSX NVARCHAR(100)
AS
BEGIN
UPDATE Phim SET
MaLP=@MaLP,MaDP=@MaDP,TenPhim=@TenPhim,NSX=@NSX
FROM Phim
WHERE MaPhim = @MaPhim
END
GO
EXECUTE SUAphim 'MP07','LP06','DP01',N'PHỐ',N'ANHTHU'
CÂU 7: XÓA một Nhân Viên tùy ý
CREATE PROC XOANV
@MaNV NVARCHAR(10)
AS
BEGIN
DELETE FROM NhanVien WHERE MaNV=@MaNV
END
GO
EXECUTE XOANV @MaNV='MaNV06'
CÂU 8: XÓA một Khách Hàng tùy ý
CREATE PROC XOAKH
@MaKH NVARCHAR(10)
AS
BEGIN
DELETE FROM KhachHang WHERE MaKH=@MaKH
END
GO
EXECUTE XOAKH @MaKH='MaKH06'
CÂU 9: ĐƯA thông tin Khách Hàng có Họ tùy ý. VD: Họ Nguyễn.
CREATE PROC ql_hoKH
@ho NVARCHAR (100)
AS
BEGIN
SELECT * FROM KhachHang
WHERE Hoten LIKE @ho+'%'
END
GO
EXECUTE ql_hoKH N'Nguyễn'
DROP PROC ql_hoKH
CÂU 10: ÐƯA ra danh sách Phim thuộc Loại Phim bất kì
CREATE PROC DSPHIM
@LoaiPhim NVARCHAR (100)
AS
BEGIN
SELECT a.MaPhim,a.TenPhim,b.LoaiPhim,a.NSX
FROM Phim a INNER JOIN LoaiPhim b ON a.MaLP=b.MaLP
WHERE LoaiPhim=@LoaiPhim
END
GO
EXECUTE DSPHIM @LoaiPhim=N'Kinh Dị'
CÂU 11 : ÐƯA ra danh sách Phim thuộc Dạng Phim bất kì
CREATE PROC DSPHIMDANG
@DangPhim NVARCHAR (100)
AS
BEGIN
SELECT a.MaPhim,a.TenPhim,b.DangPhim,a.NSX
FROM Phim a INNER JOIN DangPhim b ON a.MaDP=b.MaDP
WHERE DangPhim=@DangPhim
END
GO
EXECUTE DSPHIMDANG @DangPhim=N'3D'
CÂU 12: cập nhật Giá(tăng hay giảm) tất cả các loại vé với tỉ
lệ nhập từ bàn phím
--VD:tăng đồng loạt các loại vé 10%
CREATE PROC CAPNHATGIA
@tile float
AS
BEGIN
UPDATE LoaiVe SET DonGia =DonGia + DonGia* @tile FROM LoaiVe
END
GO
EXECUTE CAPNHATGIA @tile=0.01
CÂU 13 :cập nhât Giá với loại vé và tỉ lệ nhập từ bàn phím
--VD:tãng vé vip thêm 10%
CREATE PROC CAPNHATGIATUNGLOAI
@tile float,
@TenLV NVARCHAR(100)
AS
BEGIN
UPDATE LoaiVe SET DonGia =DonGia + DonGia* @tile
WHERE TenLV=@TenLV
END
GO
EXECUTE CAPNHATGIATUNGLOAI @tile=0.01,@TenLV=N'VIP'
CÂU 14 : Liệt số Lượt Xem của 1 một Phim bất kỳ nhập từ bàn
phím.
--c1:sử dụng tham biến
CREATE PROC ql_LX
@tenphim NVARCHAR(100)=null,
@luotxem INT =null OUTPUT
AS
BEGIN
SELECT @luotxem= COUNT(MaVe)
FROM ChiTietChieuPhim a INNER JOIN Phim b
ON a.MaPhim=b.MaPhim
WHERE TenPhim=@tenphim
END
GO
DECLARE @luotxem INT
EXECUTE ql_LX N'12 CON Giap',
@luotxem OUTPUT
SELECT @luotxem
--Cách 2:không dùng tham biến
CREATE PROC ql_LX1
@tenphim NVARCHAR(100)
AS
BEGIN
SELECT TenPhim,COUNT(MaVe)AS 'luotxem'
FROM ChiTietChieuPhim a INNER JOIN Phim b
ON a.MaPhim=b.MaPhim
WHERE TenPhim=@tenphim
GROUP BY TenPhim
END
GO
EXECUTE ql_LX1 @tenphim= N'12 CON Giap'
CÂU 15 :Thủ tục: Liệt kê ra những người bán được vé và
những người không bán được vé nào. Nhập vào 'Bán được'
thì sẽ xuất ra danh sách bán được vé. Còn nhập vào bất kỳ
ký tự nào sẽ ra không bán được vé.
CREATE PROCEDURE ql_NhanVien
@tenthaotac NAARCHAR(100)
AS
IF(@tenthaotac=N'Bán được')
BEGIN
SELECT MaNV,Hoten,Diachi,SDT FROM NhanVien
WHERE MaNV IN (SELECT a.MaNV FROM Ve a INNER JOIN
NhanVien b
ON a.MaNV=b.MaNV)
END
ELSE
BEGIN
SELECT MaNV,Hoten,Diachi,SDT FROM NhanVien
WHERE MaNV NOT IN (SELECT a.MaNV FROM Ve a INNER JOIN
NhanVien b
ON a.MaNV=b.MaNV)
END
--Nhập vào 'Bán Được' thì sẽ IN ra nhân viên bán Được vé
GO
EXECUTE ql_NhanVien
@tenthaotac=N'Bán được'