Wszystkich operatorów zbiorowych dotyczą te same zasady:
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;
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.
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;
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.
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;
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.
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;
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.
Komentarze (0)
Brak komentarzy...