[#] Podzapytania z użyciem: IN, EXISTS, ANY, ALL

( Ostatnio zmieniony śr., 11/06/2008 - 08:50 )
 

IN

SELECT * FROM info_zakupu
WHERE id IN (SELECT klienci_id FROM klienci WHERE nazwisko = 'Nowak');

Uwaga: Nie stosować NOT IN ze względu na niską wydajność. Lepiej użyć [ LEFT | RIGHT ] JOIN.

EXISTS

SELECT * FROM pozycja
WHERE EXISTS (SELECT * FROM kod_paskowy WHERE pozycja.pozycja_id = kod_paskowy.pozycja_id);

ANY

Wiersz zostanie wybrany, jeżeli wyrażenie jest zgodne z co najmniej jedną wartością zwróconą przez zapytanie wewnętrzne.

SELECT * FROM pozycje
WHERE cena > ANY (SELECT cena FROM pozycje);

Lista wszystkich towarów, z wyjątkiem najtaniej. Należy zwrócić uwagę, że na liście nie znalazł się również towar o nieznanej cienie.

ALL

Jeśli wykonujemy porównanie oparte na równości, to wartość z lewej strony równania musi być równa każdej wartości wyniku podzapytania, żeby wynik całego porównania też był prawdziwy.

SELECT * FROM pozycje
WHERE cena >= ALL (SELECT cena FROM pozycje);
5
Twoja ocena: Brak Średnio: 5 (1 vote)