Phương Nam Co LTD
Cung cấp chất hoạt động bề mặt, dầu bôi trơn Korea
© 24/4/2024 - Vietnam12h.com Application
Phép hợp, phép giao, phép trừ của các truy vấn

Đôi khi chúng ta muốn tổ hợp các quan hệ bằng cách sử dụng các phép toán tập hợp của đại số quan hệ: hợp, giao, trừ. SQL cung cấp các phép toán tương ứng áp dụng cho các kết quả của các truy vấn với điều kiện là các truy vấn đó tạo ra các quan hệ có cùng danh sách các thuộc tính và các kiểu thuộc tính. Các từ khoá được sử dụng là UNION, INTERSECT và EXCEPT cho hợp, giao và trừ tương ứng. Các từ như UNION được sử dụng giữa hai truy vấn, và các truy vấn này phải được đặt trong cặp dấu ngoặc đơn.

Ví dụ 14: Giả sử chúng ta muốn đưa ra MãsốNV của các nhân viên làm việc cho dự án có MãsốDA =1 và các nhân viên làm việc cho dự án có Mã sốDA = 2. Sử dụng quan hệ sau:

NHÂNVIÊN_DỰÁN, ta viết truy vấn như

(SELECT MãsốNV

FROM NHÂNVIÊN_DỰÁN WHERE MãsốDA = 1) UNION

(SELECT MãsốNV

FROM NHÂNVIÊN_DỰÁN WHERE MãsốDA = 2)

Lệnh SELECT đầu đưa ra các MãsốNV của các nhân viên làm việc cho dự án có MãsốDA =1, lệnh SELECT sau đưa ra các MãsốNV của các nhân viên làm việc cho dự án có MãsốDA = 2, hai tập hợp này hợp với nhau tạo thành câu trả lời cho truy vấn.

Kết quả  MãsốNV

NV001

NV002

NV016

NV018   (các bộ trùng lặp bị loại bỏ)

Ví dụ 15: Theo cách tương tự, chúng ta muốn đưa ra MãsốNV của các nhân viên vừa làm việc cho dự án có MãsốDA =1 vừa làm việc cho dự án có Mã sốDA = 2. Sử dụng quan hệ NHÂNVIÊN_DỰÁN, ta viết truy vấn như sau:

(SELECT MãsốNV

FROM NHÂNVIÊN_DỰÁN WHERE MãsốDA = 1) INTERSECT

(SELECT MãsốNV

FROM NHÂNVIÊN_DỰÁN WHERE MãsốDA = 2)

Kết quả  MãsốNV NV001

NV018

Ví dụ 16: Giả sử chúng ta muốn đưa ra MãsốNV của các nhân viên làm việc cho dự án có MãsốDA =1 nhưng không làm việc cho dự án có Mã sốDA = 2. Sử dụng quan hệ sau:

NHÂNVIÊN_DỰÁN, ta viết truy vấn như

(SELECT MãsốNV

FROM NHÂNVIÊN_DỰÁN WHERE MãsốDA = 1) EXCEPT

(SELECT MãsốNV

FROM NHÂNVIÊN_DỰÁN WHERE MãsốDA = 2)

Kết quả MãsốNV

(không có)