Operatory zestawu umożliwiają łączenie wierszy
zwracanych przez dwa zapytania lub więcej.
Gdy korzysta się z operatorów zestawu, należy pamiętać
o następujących ograniczeniach: liczba kolumn i typy kolumn muszą być takie
samie, nazwy natomiast mogą się różnić.
Przykładowe dane
Aby zobrazować działanie operatorów zestawu musimy
przygotować dane, na których będzie operować. Rozważmy dwa zestawy danych
pobrane przez poniższe zapytania. Będziemy się nimi posługiwać do końca tej
lekcji.
Pierwsze z nich pobiera kolumny cust_no, customer z
tabeli customer
gdzie cust_no < 1011.
gdzie cust_no < 1011.
Drugie z nich pobiera kolumny cust_no, customer z
tabeli customer
gdzie cust_no > 1007.
gdzie cust_no > 1007.
Operator UNION ALL
Operator UNION
ALL zwraca wszystkie wiersze pobrane przez zapytanie, łącznie z tymi
powtarzającymi się. W powyższym zapytaniu użyto operatora UNION ALL:
W zestawie wyników znajdują się wszystkie wiersze z
obu poprzednich zapytań, razem z tymi powtarzającymi się.
Operator UNION
Operator UNION zwraca
jedynie niepowtarzające się wiersze zwrócone przez zapytanie. W powyższym przykładzie
wykorzystano operator UNION:
Powtarzające się wiersze Anini Vacation Rentals, Max oraz
MPM Corporation nie zostały pobrane
dwukrotnie, więc w wynikach pojawiło się tylko 15 wierszy.
Operator INTERSECT
Operator INTERSECT zwraca wiersze, które zostały
pobrane przez obydwa zapytania. Firebird nie obsługuje operatora
INTERSECT. Jednakże można
zasymulować działanie tego operator np. poprzez poniższe zapytanie:
Zostały zwrócone
wiersze Anini Vacation Rentals, Max i MPM Corporation.
Operator MINUS
Operator MINUS zwraca wiersze pozostałe po odjęciu
wierszy pobranych przez drugie zapytanie od wierszy pobranych przez pierwsze
zapytanie.. Firebird nie obsługuje operatora MINUS. Jednakże można zasymulować działanie
tego operator np. poprzez poniższe zapytania:
Wiersze zwrócone przez pierwsze zapytanie zostały
odjęte od wierszy zwróconych przez drugie zapytanie i zostały zwrócone w wynikach.
W tym przypadku natomiast wiersze zwrócone przez drugie
zapytanie zostały odjęte od wierszy zwróconych przez pierwsze zapytanie i
zostały zwrócone w wynikach.
Brak komentarzy:
Prześlij komentarz