exists i not exists


Operatory Exists i Not Exists
Operator Exists sprawdza czy kolejne elementy z jednego zbioru znajdują swój odpowiednik w
drugim zbiorze. Istotny jest sam fakt zaistnienia odpowiednika po drugiej stronie, a nie ilość
wystąpień.
select * from departments d where exists(
select * from employees e where e.department_id=d.department_id
);
Powyższe zapytanie zwraca nam departamenty z tabeli departments w których pracuje jakikolwiek
pracownik. W podzapytaniu występuje warunek where e.department_id=d.department_id ,
określający zasadę według której system poszukuje odpowiedników w podzbiorze. Brany jest
każdy kolejny wiersz z tabeli departments , a następnie przeszukiwana tabela employees w
poszukiwaniu wiersza który w polu department_id miałby taką samą wartość. Wystarczy
znalezienie jednego odpowiednika i system przestaje skanować dane. Z tego wynika
wydajnościowa przewaga operatora EXISTS nad operatorem IN , oraz NOT EXISTS nad
operatorem NOT IN.
Bezpłatne materiały edukacyjne. www.jsystems.pl A.Klusiewicz 1/2
Możemy też wykonać operację odwrotną, tj. wyświetlić te departamenty, w których nikt nie pracuje
tj. które nie znajdują swojego odpowiednika w drugim zbiorze:
select * from departments d where not exists(
select * from employees e where e.department_id=d.department_id
);
Bezpłatne materiały edukacyjne. www.jsystems.pl A.Klusiewicz 2/2


Wyszukiwarka

Podobne podstrony:
function class exists
Santa exists does he
function dba exists
ExistsAttributeAction (2)
function array key exists
function array key exists
function file exists
function function exists
function dba exists
file exists
Santa exists says who
function function exists
Check if File exists over http
function class exists
function method exists

więcej podobnych podstron