Operatory zbiorowe

Operatory zbiorowe nazywamy również operatorami złączeń pionowych (VERTICAL JOIN), ponieważ łączą kolumny zbiorów wynikowych.

UNION DISTINCT
UNION ALL
INTERSECT [DISTINCT] [ALL]
MINUS [DISTINCT] [ALL]

Użyte tabele: employees, job_history.

Wyrażenia z list SELECT muszą być zgodne pod względem liczby kolumn i typów danych. Nawiasy mogą być użyte do zmiany kolejności wykonania. Klauzula ORDER BY może pojawić się tylko na samym końcu zapytania, przyjmie nazwę kolumny z pierwszego zapytania SELECT.

Zduplikowane wiersze są automatyczne eliminowane przez SZBD Oracle z wyjątkiem UNION ALL.

UNION [DISTINCT]

Suma zbiorów, eliminuje duplikaty.

Załóżmy, że mamy 2 tabele: t1 ma wiersze 1, 2, 3; t2 ma wiersze 2, 3, 4. W wyniku usunięte zostaną zduplikowane wiersze 2, 3.

-- Wyświetla bieżące i poprzednie szczegóły dotyczące zatrudnienia wszystkich pracowników. Wyświetla każdego pracownika tylko raz.
SELECT employee_id, job_id
FROM employees
UNION
SELECT employee_id, job_id
FROM job_history;

UNION ALL

Suma zbiorów bez eliminowania duplikatów.

Załóżmy, że mamy 2 tabele jak poprzednio. W wyniku znajdą się zduplikowane wiersze 2, 3.

SELECT employee_id, job_id, department_id
FROM employees
UNION ALL
SELECT employee_id, job_id, department_id
FROM job_history;

INTERSECT [DISTINCT] [ALL]

Część wspólna zbiorów.

Załóżmy, że mamy 2 tabele jak poprzednio. W wyniku znajdują się tylko wiersze 2, 3.

MINUS

Różnica zbiorów.

Załóżmy, że mamy 2 tabele jak poprzednio. W wyniku znajdzie się tylko wiersz 1.

-- Wyświetl listę identyfikatorów pracowników, którzy nigdy nie zmienili pracy.

SELECT employee_id, job_id
FROM employees
MINUS
SELECT employee_id, job_id
FROM job_history;

Dopasowanie w klauzulach SELECT

-- Wyświetla id. pracownika, id. stanowiska i wynagr. wszystkich pracowników
SELECT employee_id, job_id, salary
FROM employees
UNION
SELECT employee_id, job_id, 0
FROM job_history;

Sortowanie wierszy

COLUMN a_dummy NOPRINT
SELECT 'sing' AS "My dream", 3 a_dummy
FROM dual
UNION
SELECT 'I''d like to teach', 1 a_dummy
FROM dual
UNION
SELECT 'the world to', 2 a_dummy
FROM dual
ORDER BY a_dummy;

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.