16_SQL. Działania na zbiorach SQL: operator MINUS

Operator MINUS wyświetla w tabeli wynikowej tylko te wartości, które są w tabeli pierwszej bez wspólnych elementów drugiej tabeli. 

Skorzystamy z bezpłatnej bazy Oracle HR dostępnej tutaj:

http://www.oracle.com/technetwork/database/express-edition/downloads/index.html

 Operator MINUS 

W poprzednim wpisie wyświetliliśmy wszystkie wartości wspólne dla tabel DEPARTMENTS i JOB_HISTORY. Uzyskaliśmy wtedy takie wartości:

Teraz stosując operator MINUS wyświetlimy wartości które są w tabeli JOB_HISTORY a nie ma ich w tabeli DEPARTMENTS.

SELECT DEPARTMENT_ID

FROM JOB_HISTORY

MINUS

SELECT DEPARTMENT_ID

FROM DEPARTMENTS;

Uzyskaliśmy zerową ilość rekordów ponieważ wszystkie DEPARTMENT_ID, które są w tabeli JOB_HISTORY były również w tabeli DEPARTMENTS.

Robimy więc odwrotnie. Szukamy wszystkich DEPARTMENT_ID, które nie występują w JOB_HISTORY a występują w tabeli DEPARTMENT.

SELECT DEPARTMENT_ID

FROM DEPARTMENTS

MINUS

SELECT DEPARTMENT_ID

FROM JOB_HISTORY;

Uzyskujemy wszystkie DEPARTMENT_ID, których nie ma w JOB_HISTORY.