Wchodzimy głębiej. Dotąd podzapytanie wykonywało się raz i zwracało gotowy wynik. Podzapytanie skorelowane (correlated subquery) jest inne: odwołuje się do kolumny z zapytania zewnętrznego i wykonuje się na nowo dla każdego wiersza przetwarzanego na zewnątrz.
1SELECT a.imie, a.nazwisko
2FROM autorzy AS a
3WHERE 3 < (
4 SELECT COUNT(*)
5 FROM ksiazki AS k
6 WHERE k.autor_id = a.id
7);Zwróć uwagę na warunek
k.autor_id = a.id. Podzapytanie zna a.id - wartość z bieżącego wiersza zapytania zewnętrznego. Dla każdego autora Biblioteka liczy jego książki i zostawia tylko tych, którzy mają ich więcej niż trzy.a.id.Skorelowane podzapytania bywają wolniejsze (wykonują się wielokrotnie), ale są niezwykle potężne - pozwalają zadawać pytania w stylu "dla każdego wiersza sprawdź coś po drugiej stronie".
@name