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.

Komentarze (0)

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

Brak komentarzy...