Pierwszy korytarz Labiryntu jest najprostszy. Podzapytanie skalarne to takie, które zwraca dokładnie jedną wartość - jeden wiersz i jedną kolumnę. Dzięki temu możemy użyć go wszędzie tam, gdzie SQL spodziewa się pojedynczej liczby lub tekstu.
Najczęściej wstawiamy je do klauzuli WHERE, by porównać każdy wiersz z wynikiem obliczenia:
1SELECT tytul, cena
2FROM ksiazki
3WHERE cena > (SELECT AVG(cena) FROM ksiazki);Podzapytanie
(SELECT AVG(cena) FROM ksiazki) zwraca jedną liczbę - średnią cenę. Zapytanie zewnętrzne porównuje z nią cenę każdej książki i zostawia tylko te droższe od średniej.W podzapytaniu skalarnym świetnie sprawdzają się funkcje takie jak
MAX, MIN, COUNT:1SELECT tytul
2FROM ksiazki
3WHERE rok_wydania = (SELECT MAX(rok_wydania) FROM ksiazki);To zapytanie znajdzie najnowszą księgę w Bibliotece - tę z największym rokiem wydania. Gdybyśmy chcieli najstarszą, użylibyśmy
MIN zamiast MAX.Podzapytanie skalarne musi zwrócić jedną wartość. Gdyby zwróciło wiele wierszy, a użyjemy operatora
= lub >, Biblioteka zaprotestuje błędem. Jeśli spodziewasz się wielu wyników - potrzebny będzie operator IN, który poznasz w następnym korytarzu.@name