Dữ liệu quản lý vé cụm rạp chiếu phim 6, 8, 9, 10???????????????? quan hệ 1-n mà k đếm khóa thì dùng Distinct CumRap (MaCum varchar(5), TenCum nvarchar(50), DiaChi nvarchar(100)) Rap (MaRap varchar(5), TongGhe int, MaCum varchar(5)) TongGhe: tổng số chổ ngồi LoaiGhe (MaLoaiGhe varchar(5), TenLoaiGhe nvarchar(50) , SLGhe int) Ví dụ: Loại ghế đơi thật sư ghế đánh số số lượng ghế (Slghe) RapGhe (MaRap varchar(5), MaHang char(1), SoGheBatDau int, SoGheKetThuc int, MaLoaiGhe varchar(5)) TheLoai (MaTheLoai varchar(5), TenTheLoai nvarchar(50)) Phim (MaPhim varchar(10), TenPhim nvarchar(50), MaTheLoaiChinh varchar(5), ThoiLuong int, CoLa3D bit, CoLongTieng bit) PhimTheLoai (MaPhim varchar(10), MaTheLoai varchar(5)) KeHoach (MaPhim varchar(10), MaCum varchar(5), NgayKhoiChieu date, NgayKetThuc date, GhiChu nvarchar(100)) SuatChieu (MaSuat varchar(3), GioBatDau int, PhutBatDau int) LichChieu (MaPhim varchar(10), MaRap varchar(5), NgayChieu date, ChuoiMaSuat nvarchar(100)) ChuoiMaSuat: Ghi nhận dãy mã suất chiếu ngày mà rạp chiếu NgheNghiep (MaNghe varchar(5), TenNghe nvarchar(100)) ThanhPho (MaThanhPho varchar(5), TenThanhPho nvarchar(100)) Quan (MaQuan varchar(5), TenQuan nvarchar(100), MaThanhPho varchar(5)) ThanhVien (MaThanhVien varchar(5), TenThanhVien nvarchar(50), NamSinh int, GioiTinh bit, MaQuan varchar(5), MaNghe varchar(5)) BangGia (MaLoaiGhe varchar(5), MaSuat varchar(3), NgayBatDau date, Gia float, GhiChu nvarchar(100)) Ve (MaSoVe varchar(20), MaPhim varchar(10), MaRap varchar(5), NgayChieu date, NgayMua date, MaSuat varchar(3), MaHang char(1), So int, MaLoaiGhe varchar(5), MaThanhVien varchar(5), GiaGoc float, SoTienPhuThu float, SoTienGiam float) GiamGia (MaGiam int, MaPhim varchar(10), MaRap varchar(5), Thu int, Ngay date, MaSuat varchar(3), MaLoaiGhe varchar(5), NgayBatDauApDung date, LoaiHinhGiam int, GiaMoi float, PhanTramGiam float) GiamGiaTheoNguoi (MaGiam int, Tuoi int, GioiTinh bit, MaNghe nvarchar(5), NgayBatDauApDung date, LoaiHinhGiam int, GiaMoi float, PhanTramGiam float) Câu hỏi Viết câu truy vấn cho danh sách gồm mã phim, tên phim, tổng số thể loại phim (Quy định: giá trị trường mã thể loại phim bắt buộc phải nằm danh sách mã thể loại bảng PhimTheLoai phim đó) Phim (MaPhim varchar(10), TenPhim nvarchar(50), MaTheLoaiChinh varchar(5), ThoiLuong int, CoLa3D bit, CoLongTieng bit) PhimTheLoai (MaPhim varchar(10), MaTheLoai varchar(5)) SELECT p.MaPhim, p.TenPhim, COUNT ( ptl.MaTheLoai) AS TS TheLoai FROM Phim p INNER JOIN PhimTheLoai ON ptl p.MaPhim=ptl.Maphim GROUP BY p.MaPhim, p.TenPhim Viết câu truy vấn cho danh sách gồm mã phim, tên phim, tổng số thể loại phim (Quy định: giá trị trường mã thể loại phim bắt buộc khơng nằm danh sách mã thể loại bảng PhimTheLoai phim đó, mã thể loại khơng thể giá trị rổng) SELECT p.MaPhim, p.TenPhim, COUNT ( ptl.MaTheLoai, p.MaTheLoaiChinh) AS TS TheLoai FROM Phim p INNER JOIN PhimTheLoai ptl ON p.MaPhim=ptl.Maphim GROUP BY p.MaPhim, p.TenPhim Viết câu truy vấn cho danh sách gồm mã phim, tên phim mà năm 2015 có kế hoạch chiếu Phim (MaPhim varchar(10), TenPhim nvarchar(50), MaTheLoaiChinh varchar(5), ThoiLuong int, CoLa3D bit, CoLongTieng bit) KeHoach (MaPhim varchar(10), MaCum varchar(5), NgayKhoiChieu date, NgayKetThuc date, GhiChu nvarchar(100)) SELECT p.MaPhim, p.TenPhim FROM Phim p INNER JOIN KeHoach k ON p.MaPhim=k.Maphim WHERE YEAR (k.NgayKhoiChieu)=2015 GROUP BY p.MaPhim, p.TenPhim HAVING COUNT (k.MaPhim)>3 Viết câu truy vấn cho danh sách gồm mã quận, tên quận, tên thành phố mà có số lượng thành viên nam 30 tuổi 100 người ThanhPho (MaThanhPho varchar(5), TenThanhPho nvarchar(100)) Quan (MaQuan varchar(5), TenQuan nvarchar(100), MaThanhPho varchar(5)) ThanhVien (MaThanhVien varchar(5), TenThanhVien nvarchar(50), NamSinh int, GioiTinh bit, MaQuan varchar(5), MaNghe varchar(5)) SELECT q.MaQuan, q.TenQuan,tp.TenThanhPho FROM (ThanhVien tv INNER JOIN Quan q ON tv.MaQuan=q.MaQuan)INNER JOIN ThanhPho ON tp.MaThanhPho=q.MaThanhPho WHERE tv.GioiTinh =1 AND (YEAR (GETDATE)-tv.NamSinh)100 Viết câu truy vấn cho danh sách gồm mã cụm, tên cụm mà có kế hoạch chiếu nhiều phim CumRap (MaCum varchar(5), TenCum nvarchar(50), DiaChi nvarchar(100)) KeHoach (MaPhim varchar(10), MaCum varchar(5), NgayKhoiChieu date, NgayKetThuc date, GhiChu nvarchar(100)) SELECT c.MaCum, c.TenCum FROM CumRap c INNER JOIN KeHoach kh ON c.MaCum=kh.MaCum WHERE COUNT (kh.MaPhim)=SELECT MAX(MaPhim) FROM KeHoach Viết câu truy vấn cho danh sách gồm ngày chiếu mà có số lượng người thực xem phim nhiều quý năm 2015 (Lưu ý: Nếu mã loại ghế vé có SLGhe = n, hiểu có n người thực xem) Ve (MaSoVe varchar(20), MaPhim varchar(10), MaRap varchar(5), NgayChieu date, NgayMua date, MaSuat varchar(3), MaHang char(1), So int, MaLoaiGhe varchar(5), MaThanhVien varchar(5), GiaGoc float, SoTienPhuThu float, SoTienGiam float) Ví dụ: Loại ghế đôi thật sư ghế đánh số số lượng ghế (Slghe) B1: gom sl ghế theo ngày chiếu SELECT v.NgayChieu, SUM (lg.SLGhe) AS TongGhe INTO #b1 FROM Ve v INNER LoaiGhe lg ON v.MaLoaiGhe=lg.MaLoaiGhe WHERE MONTH(v.NgayChieu)>=10 AND MONTH(v.NgayChieu)20 Viết câu truy vấn cho danh sách gồm mã phim, tên phim, ngày chiếu, mã rạp, mã suất chiếu mà khơng cịn chổ ngồi dư (Lưu ý: Nếu mã loại ghế vé có SLGhe = n, hiểu có n chổ ngồi mua) Phim (MaPhim varchar(10), TenPhim nvarchar(50), MaTheLoaiChinh varchar(5), ThoiLuong int, CoLa3D bit, CoLongTieng bit) Ve (MaSoVe varchar(20), MaPhim varchar(10), MaRap varchar(5), NgayChieu date, NgayMua date, MaSuat varchar(3), MaHang char(1), So int, MaLoaiGhe varchar(5), MaThanhVien varchar(5), GiaGoc float, SoTienPhuThu float, SoTienGiam float) LoaiGhe (MaLoaiGhe varchar(5), TenLoaiGhe nvarchar(50) , SLGhe int) Ví dụ: Loại ghế đơi thật sư ghế đánh số số lượng ghế (Slghe) Rap (MaRap varchar(5), TongGhe int, MaCum varchar(5)) TongGhe: tổng số chổ ngồi SELECT p.MaPhim, p.TenPhim, v.NgayChieu, v.MaRap, v.MaSuat FROM ((Ve v INNER JOIN Phim p ON p.MaPhim=v.MaPhim) INNER JOIN LoaiGhe lg ON lg.MaLoaiGhe=v.MaLoaiGhe) INNER JOIN Rap r ON r.MaRap=v.MaRap GROUP BY p.MaPhim, p.TenPhim, v.NgayChieu, v.MaRap, v.MaSuat HAVING SUM(lg.SLGhe)=r.TongGhe 10.Viết câu truy vấn cho danh sách gồm mã phim, tên phim mà ngày chiếu, suất chiếu rạp không dư chổ ngồi Phủ định: có ngày chiếu hoặc có suất chiếu mà có rạp bị dư chô Gôm rạp theo ngày chiếu, suất chiếu mà rạp bị dư chô Ve (MaSoVe varchar(20), MaPhim varchar(10), MaRap varchar(5), NgayChieu date, NgayMua date, MaSuat varchar(3), MaHang char(1), So int, MaLoaiGhe varchar(5), MaThanhVien varchar(5), GiaGoc float, SoTienPhuThu float, SoTienGiam float) LoaiGhe (MaLoaiGhe varchar(5), TenLoaiGhe nvarchar(50) , SLGhe int) Ví dụ: Loại ghế đơi thật sư ghế đánh số số lượng ghế (Slghe) Rap (MaRap varchar(5), TongGhe int, MaCum varchar(5)) CÁCH 1: SELECT p.MaPhim, p.TenPhim FROM Ve v INNER JOIN Phim p ON p.MaPhim=v.MaPhim WHERE v.NgayChieu, v.MaSuat NOT IN (SELECT v.NgayChieu, v.MaSuat FROM (Ve v INNER JOIN Rap r ON r.MaRap=v.MaRap) INNER JOIN LoaiGhe lg ON lg.MaLoaiGhe=v.MaLoaiGhe WHERE SUM(sl.SLGhe)Tổng số ghế theo mã loại ghế CumRap (MaCum varchar(5), TenCum nvarchar(50), DiaChi nvarchar(100)) Rap (MaRap varchar(5), TongGhe int, MaCum varchar(5)) TongGhe: tổng số chổ ngồi LoaiGhe (MaLoaiGhe varchar(5), TenLoaiGhe nvarchar(50) , SLGhe int) Ví dụ: Loại ghế đôi thật sư ghế đánh số số lượng ghế (Slghe) RapGhe (MaRap varchar(5), MaHang char(1), SoGheBatDau int x, SoGheKetThuc int y, MaLoaiGhe varchar(5)t ) SELECT r.MaRap, c.TenCum, lg.MaLoaiGhe, lg.TenLoaiGhe, SUM (SLGhe) AS Tong INTO #b1 FROM ((CumRap c INNER JOIN Rap r ON c.MaCum=r.MaCum) INNER JOIN RapGhe rg ON rg.MaRap=r.MaRap) INNER JOIN LoaiGhe lg ON lg.MaLoaiGhe=rg.MaLoaiGhe GROUP BY rr.MaRap, c.TenCum, lg.MaLoaiGhe, lg.TenLoaiGhe, 12.Viết câu truy vấn cho danh sách gồm mã rạp, tên cụm rạp mà có tổng số ghế thuộc loại ghế có mã “GGĐ” nhiều CumRap (MaCum varchar(5), TenCum nvarchar(50), DiaChi nvarchar(100)) Rap (MaRap varchar(5), TongGhe int, MaCum varchar(5)) TongGhe: tổng số chổ ngồi LoaiGhe (MaLoaiGhe varchar(5), TenLoaiGhe nvarchar(50) , SLGhe int) Ví dụ: Loại ghế đơi thật sư ghế đánh số số lượng ghế (Slghe) RapGhe (MaRap varchar(5), MaHang char(1), SoGheBatDau int, SoGheKetThuc int, MaLoaiGhe varchar(5)) SELECT r.MaRap, c.TenCum, SUM (SLGhe) AS Tong INTO #b1 FROM ((CumRap c INNER JOIN Rap r ON c.MaCusm=r.MaCum) INNER JOIN RapGhe rg ON rg.MaRap=r.MaRap) INNER JOIN LoaiGhe lg ON lg.MaLoaiGhe=rg.MaLoaiGhe WHERE lg.MaLoaiGhe=’GGĐ’ GROUP BY r.MaRap, c.TenCum SELECT r.MaRap, c.TenCum FROM #b1 WHERE Tong = SELECT MAX(Tong) FROM #b1 13.Viết câu truy vấn cho danh sách gồm mã cụm, tên cụm mà có tổng số chổ ngồi nhiều (lưu ý khái niệm: tổng số chổ ngồi tổng số ghế thuộc mã loại ghế) CumRap (MaCum varchar(5), TenCum nvarchar(50), DiaChi nvarchar(100)) Rap (MaRap varchar(5), TongGhe int, MaCum varchar(5)) TongGhe: tổng số chổ ngồi SELECT r.MaCum, c.TenCum, SUM (TongGhe) AS Tong INTO #b1 FROM CumRap c INNER JOIN Rap r ON c.MaCum=r.MaCum GROUP BY r.MaCum, c.TenCum SELECT c.MaCum, c.TenCum FROM #b1 WHERE Tong = SELECT MAX(Tong) FROM #b1 ... ThanhPho (MaThanhPho varchar(5), TenThanhPho nvarchar(100)) Quan (MaQuan varchar(5), TenQuan nvarchar(100), MaThanhPho varchar(5)) ThanhVien (MaThanhVien varchar(5), TenThanhVien nvarchar(50), NamSinh... (MaCum varchar(5), TenCum nvarchar(50), DiaChi nvarchar(100)) Rap (MaRap varchar(5), TongGhe int, MaCum varchar(5)) TongGhe: tổng số chổ ngồi LoaiGhe (MaLoaiGhe varchar(5), TenLoaiGhe nvarchar(50)... xem) Ve (MaSoVe varchar(20), MaPhim varchar(10), MaRap varchar(5), NgayChieu date, NgayMua date, MaSuat varchar(3), MaHang char(1), So int, MaLoaiGhe varchar(5), MaThanhVien varchar(5), GiaGoc