[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 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ệ


(select MaPhim from PHIM)
except
(select MaPhim from SUATCHIEU);



-- Nếu cần nhiều thông tin của một bộ phim hơn
select *
from PHIM
where MaPhim IN (
                (select MaPhim from PHIM)
                except
                (select MaPhim from SUATCHIEU)
               );


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



select p.*
from PHIM p left join SUATCHIEU sc
            on p.MaPhim = sc.Maphim
where sc.MaSC IS NULL;


---

Nhận xét

Bài đăng phổ biến từ blog này

[DATABASE] Tìm mọi khóa của lược đồ quan hệ

[DATABASE] Phủ tối thiểu của tập phụ thuộc hàm

[DATABASE] Dạng chuẩn cao nhất của lược đồ quan hệ