[DATABASE] Phép trừ trong SQL - Bài toán "chưa"
- Thông thường, bài toán về phép trừ có chứa từ khóa "chưa" trong yêu cầu. Ví dụ: Cho biết trang phục chưa bao giờ được khách chọn ký hợp đồng thuê; những thể loại chưa được làm phim,...
- Để thực hiện phép trừ cần chú ý điều kiện khả hợp giữa hai bảng Table1 và Table2 (cùng thuộc tính, các thuộc tính cùng miền giá trị)
- Phép trừ Table1 - Table2 tạm dịch là tham gia Table1 mà không tham gia Table2. Có 2 cách để biểu diễn phép trừ trong ngôn ngữ truy vấn SQL: EXCEPT và sử dụng phép kết không mất thông tin (left join hoặc right join)
Xét cơ sở dữ liệu quan hệ sau và cho biết những phim chưa được chiếu?
PHONGCHIEU (MaPC, TenPhong, SucChua, LoaiCN) PHIM (MaPhim, TenPhim, ThoiLuong, NgayPhatHanh, DoanhThu)
THELOAI (MaTL, TenTL)
PHIM_THELOAI (MaPhim, MaTL)
SUATCHIEU (MaSC, MaPhim, NgayChieu, GioChieu, MaPC, TongTienVe)
-------------
Cách 1: Sử dụng EXCEPT
Khi sử dụng từ khóa except trong câu truy vấn SQL cần chú ý điều kiện khả hợp giữa hai quan hệ
Cách 2: Sử dụng phép kết không mất thông tin (left join)
LEFT JOIN trong SQL là kiểu JOIN trả về tất cả các bản ghi từ bảng bên trái và các bản ghi phù hợp từ bảng bên phải. Nếu mệnh đề ON không khớp với bản ghi nào trong bảng bên phải thì LEFT JOIN sẽ trả về giá trị là NULL trong mỗi cột từ bảng bên phải.
=> Giữ nguyên bảng bên trái, ánh xạ bảng bên phải vào bảng bên trái; nếu bản ghi của bảng bên trái không khớp với bất kì bản ghi nào của bảng bên phải thì mang giá trị NULL
Nhận xét
Đăng nhận xét