BD-1st-2.4-lab5.tresc-1.1-Slajd7
Podzapytanie tablicowe
Drugi rodzaj podzapytań, tzw. podzapytania tablicowe (nazywane również podzapytaniami wielowierszowymi), zwraca zbiór rekordów, zawierających jedną lub kilka wartości. W przypadku stosowania podzapytań tablicowych w warunkach w klauzulach WHERE i HAVING zapytań zewnętrznych można użyć jedynie operatora IN zawierania w zbiorze oraz dwóch nowych operatorów, ANY i ALL (operatory te zostaną przedstawione na następnych slajdach).
W zaprezentowanym na slajdzie przykładzie podzapytanie znajduje maksymalną płacę podstawową pracownika dla każdej grupy etatowej. Podzapytanie odczytuje zbiór rekordów, z których każdy posiada dwie wartości: nazwę etatu i maksymalną pensję dla etatu. Podzapytanie umieszczono w klauzuli WHERE zapytania zewnętrznego, stosując operator IN. Ponieważ podzapytanie zwraca w każdym rekordzie dwie wartości, po lewej stronie warunku klauzuli WHERE umieszczono listę atrybutów: atrybut ETAT z rekordu przeglądanego przez zapytanie zewnętrzne będzie porównywana z wartością atrybutu ETAT z podzapytania, a atrybut PLACA_POD z wartością wyrażenia MAX(PLACA_POD) podzapytania. Jeśli dopasowanie zajdzie dla obu atrybutów (np. dany pracownik jest na etacie „ADIUNKT” i zarabia 2845,5), wówczas rekord zapytania zewnętrznego trafi do zbioru wynikowego. Przykładowe zapytanie znajduje nazwiska pracowników, zarabiających maksymalne płace w ramach swoich grup etatowych.