Jeśli podzapytanie zwraca jakąkolwiek wartość, wtedy  					   wyrażenie EXISTS podzapytanie zwraca wartość TRUE, natomiast 					   NOT EXISTS podzapytanie zwraca 					   FALSE.   Na przykład (patrz listing 1.0).     W przykładzie tym, jeśli tab2 zawiera jakiekolwiek wiersze, nawet wiersze, kóre nie zwierają  					   nic innego poza wartością NULL wtedy warunek EXISTS jest zawsze 					   równy TRUE. Następne przykłady:     Jaki rodzaj sklepu występuje w jednym lub więcej miejscowościach? (patrz listing 2.0) Jakiego rodzaju sklepu nie ma w żadnym mieście?                               (patrz listing3.0) Jaki rodzaj sklepu występuje we wszystkich miastach?                               (patrz listing 4.0)   W ostatnim przykładzie mamy podwójnie zagnieżdżone zapytanie 					   z NOT EXISTS. 					   Formalnie, to zapytanie to brzmi: 					   "czy istnieje miasto ze sklepem, którego nie ma wśród sklepów"? 					   Ale można też prościej zapytać po prostu: 					   "czy x jest prawdziwe dla wszystkich y"?
Listing
SELECT col1 FROM tab1 WHERE EXISTS (SELECT * FROM tab2);
--Listing 2.0
SELECT DISTINCT rodzaj_sklepu FROM sklepy
WHERE EXISTS (SELECT * FROM miasta_sklepy
WHERE miasta_sklepy.rodzaj_sklepu = sklepy.rodzaj_sklepu);
--Listing 3.0
SELECT DISTINCT rodzaj_sklepu FROM sklepy
WHERE NOT EXISTS (SELECT * FROM miasta_sklepy
WHERE miasta_sklepy.rodzaj_sklepu = sklepy.rodzaj_sklepu);
--Listing 4.0
SELECT DISTINCT rodzaj_sklepu FROM Stores S1
WHERE NOT EXISTS (
SELECT * FROM miasta WHERE NOT EXISTS (
SELECT * FROM miasta_sklepy
WHERE miasta_sklepy.miasto = miasta.miasto
AND miasta_sklepy.rodzaj_sklepu = sklepy.rodzaj_sklepu));
Ranga: Administrator serwisu Punktów: 0



 
  
				

 
                             
 


 
                        
 
		 
	