Blog JSystems - uwalniamy wiedzę!

Szukaj

Wszystkich operatorów zbiorowych 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.

select ProductID, Name, ListPrice, ProductCategoryID  from SalesLT.Product where ProductID between 800 and 805

union all

select ProductID, Name, ListPrice, ProductCategoryID  from SalesLT.Product where ProductID between 803 and 808;

91.jpg (794×453)

Utworzone zostały dwa zapytania, pierwsze zawierało produkty o identyfikatorze produktu w przedziale zamkniętym od 800 do 805, drugi natomiast przedziale zamkniętym od 803 do 808. W wyniku zastosowania operatora union all otrzymaliśmy sumę wierszy wyświetloną przez oba zapytania. Widać to na produktach o identyfikatorze produktu 803, 804 i 805 – zostały one wyświetlone dwa razy.

UNION

Połączenie to 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.

select ProductID, Name, ListPrice, ProductCategoryID  from SalesLT.Product where ProductID between 800 and 805

union all

select ProductID, Name, ListPrice, ProductCategoryID  from SalesLT.Product where ProductID between 803 and 808;

92.jpg (797×394)

Utworzone zostały dwa zapytania, pierwsze zawierało produkty o identyfikatorze produktu w przedziale zamkniętym od 800 do 805, drugi natomiast przedziale zamkniętym od 803 do 808. W wyniku zastosowania operatora union otrzymaliśmy sumę wierszy wyświetloną przez oba zapytania, ale tym razem powtórzenia zostały wyeliminowane.

INTERSECT

Połączenie za pomocą operatora zbiorowego intersect wyświetla tylko te wiersze które wystąpiły w obu zbiorach - tj. część wspólna dwóch zbiorów.

select ProductID, Name, ListPrice, ProductCategoryID  from SalesLT.Product where ProductID between 800 and 805

intersect

select ProductID, Name, ListPrice, ProductCategoryID  from SalesLT.Product where ProductID between 803 and 808;

93.jpg (795×281)

Utworzone zostały dwa zapytania, pierwsze zawierało produkty o identyfikatorze produktu w przedziale zamkniętym od 800 do 805, drugi natomiast przedziale zamkniętym od 803 do 808. W wyniku zastosowania operatora intersect otrzymaliśmy wiersze które występowały w obu zapytaniach.

EXCEPT

Połączenie przy pomocy minus eliminuje z pierwszego zbioru te rekordy, które wystąpiły w drugim zbiorze.

select ProductID, Name, ListPrice, ProductCategoryID  from SalesLT.Product where ProductID between 800 and 805

except

select ProductID, Name, ListPrice, ProductCategoryID  from SalesLT.Product where ProductID between 803 and 808;

94.jpg (794×282)

 

Utworzone zostały dwa zapytania, pierwsze zawierało produkty o identyfikatorze produktu w przedziale zamkniętym od 800 do 805, drugi natomiast przedziale zamkniętym od 803 do 808. W wyniku zastosowania operatora except otrzymaliśmy wiersze z zapytania pierwszego, lecz z wyeliminowanymi wierszami które wystąpiły w drugim zapytaniu.

Baner szkolenia Kompleksowe SQL w Microsoft SQL Server w JSystems, terminy gwarantowane

Szkolenie Kompleksowe SQL w Microsoft SQL Server →

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Jakie zasady dotyczą wszystkich operatorów zbiorowych?
Kolumny na tych samych pozycjach muszą być tego samego typu, a wszystkie zapytania składowe muszą zwracać tyle samo kolumn. Nazwy kolumn w wyniku pochodzą z pierwszego zapytania, a sortować można tylko wynik całości, nie poszczególne zapytania.
Czym różni się UNION od UNION ALL?
UNION ALL zwraca sumę wszystkich wierszy z obu zapytań, łącznie z powtórzeniami. UNION także zwraca sumę wierszy, ale eliminuje z wyniku końcowego wiersze powtarzające się w obu zbiorach składowych.
Co robi operator INTERSECT?
INTERSECT zwraca tylko te wiersze, które wystąpiły w obu zapytaniach składowych jednocześnie, czyli część wspólną dwóch zbiorów. Wiersze obecne tylko w jednym z zapytań nie trafią do wyniku.
Do czego służy operator EXCEPT?
EXCEPT eliminuje z pierwszego zbioru te wiersze, które wystąpiły w drugim zbiorze. W wyniku dostajesz wiersze z pierwszego zapytania pomniejszone o te, które pojawiły się także w drugim.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...