OPERATORY ZBIOROWE
Wszystkie operatory zbiorowe dotyczą te same zasady:
- Kolumny na tych samych pozycjach muszą być tego samego typu.
- Zapytania muszą zwracać tą samą liczbę kolumn.
- Nazwy kolumn w wyniku pobierane są z pierwszego zapytania.
- Sortować można tylko wynik całości
UNION ALL
powoduje, że w wyniku zapytania otrzymujemy sumę wszystkich wierszy, które znajdowały się w obu zapytaniach składowych.
UNION
powoduje, że w wyniku zapytania otrzymujemy sumę wszystkich wierszy, które znajdowały się w obu zapytaniach składowych, ale z wyniku końcowego eliminowane są wiersze, które powtarzają się w obu zbiorach składowych.
Różnicę widać na przykładzie:
Najpierw wyświetliłem wszystkich którzy pracują w departamencie o numerze 90, następnie wszystkich zarabiających powyżej 12000$. Przy korzystaniu z operatora union all, osoby się powtarzają. Kiedy w kolejnym przykładzie zastosowałem union, powtórki zostały wyeliminowane.
INTERSECT
Połączenie za pomocą intersect wyświetla tylko te wiersze które wystąpiły w obu zbiorach.
MINUS
Połączenie przy pomocy minus eliminuje z pierwszego zbioru te rekordy które wystąpiły w drugim zbiorze. W tym wypadku wyświetlone zostały tylko te osoby których zarobki są wyższe niż 12 000 ale jednocześnie nie pracują w departamencie numer 90.
Ten temat omawiam na poniższych szkoleniach:
• Podstawy Oracle SQL
• Podstawy SQL i PL/SQL
Możesz w nich uczestniczyć, a jako czytelnik tego bloga otrzymasz 10% zniżki - poinformuj o tym fakcie konsultanta.
Bardzo ważna sprawa, operator MINUS usuwa duplikaty. To naprawde 'where not exists' po wymienionych w zapytaniach kolumnach
OdpowiedzUsuńpewnie szybsze
Usuńwartościowy blog
OdpowiedzUsuńSuper blog. Działam w MySQL i MSSQL, a teraz zaczynam SQL w Oracle. Niby podobnie, ale jest trochę różnic, a blog jest naprawdę bardzo pomocny. Polecam!
OdpowiedzUsuń