Twoje Centrum Szkoleniowe

Nauczmy się dziś czegoś nowego!

Kurs programowania - SQL

Podzapytania (subqueries) – definicja, zastosowanie i sposób użycia

Podzapytania, zwane także subqueries, to zapytania SQL, które są umieszczone wewnątrz innych zapytań. Działają one jak "zapytania w zapytaniach" i są używane do wyciągania danych, które następnie wykorzystuje się w głównym zapytaniu. Podzapytania są przydatne, gdy chcemy przeprowadzić operacje wymagające kilku kroków, a wynik jednego kroku jest potrzebny do kolejnego.

Jak działają podzapytania?

Podzapytanie to zapytanie znajdujące się w nawiasach wewnątrz innego zapytania SQL. Może zwrócić jedną wartość albo całą tabelę danych, które można użyć jako filtr, wartość do porównania albo kolumnę w głównym zapytaniu. Podzapytania często występują w klauzulach takich jak SELECT, FROM czy WHERE.

Przykład podstawowej składni podzapytania:

SELECT kolumna1, kolumna2
FROM tabela1
WHERE kolumna3 = (SELECT MAX(kolumna3) FROM tabela2);

W tym przykładzie podzapytanie (SELECT MAX(kolumna3) FROM tabela2) zwraca maksymalną wartość z kolumny kolumna3 w tabeli tabela2, a główne zapytanie używa tej wartości jako filtru.

Zastosowanie podzapytań

Podzapytania można stosować na wiele sposobów, aby rozwiązać złożone problemy i uzyskać zaawansowane wyniki. Oto kilka sytuacji, w których podzapytania są szczególnie przydatne:

  1. Filtrowanie danych: Podzapytania mogą być używane do filtrowania wyników na podstawie innych danych. Na przykład możemy znaleźć uczniów, którzy mają najwyższą ocenę.

Przykład:

SELECT imie, nazwisko
FROM Uczniowie
WHERE ocena = (SELECT MAX(ocena) FROM Uczniowie);

W tym przykładzie podzapytanie zwraca najwyższą ocenę, a główne zapytanie wyświetla imiona i nazwiska uczniów, którzy ją otrzymali.

  1. Zagnieżdżone dane: Podzapytania można używać do wyciągania danych zależnych od wyników innych zapytań. Na przykład możemy znaleźć klasy, które mają więcej niż pięciu uczniów.

Przykład:

SELECT nazwa
FROM Klasy
WHERE id IN (SELECT klasa_id
             FROM Uczniowie
             GROUP BY klasa_id
             HAVING COUNT(*) > 5);

Tutaj podzapytanie zwraca identyfikatory klas z więcej niż pięcioma uczniami, a główne zapytanie wyświetla nazwy tych klas.

  1. Porównanie danych: Podzapytania mogą być używane do porównywania danych w tej samej tabeli lub między tabelami. Na przykład, można znaleźć produkty, które mają cenę wyższą niż średnia.

Przykład:

SELECT nazwa, cena
FROM Produkty
WHERE cena > (SELECT AVG(cena) FROM Produkty);

Podzapytanie oblicza średnią cenę produktów, a główne zapytanie zwraca produkty, które mają cenę wyższą niż ta średnia.

Typy podzapytań

Podzapytania mogą być różnego rodzaju, w zależności od sposobu użycia:

  • Podzapytania skalarne: Zwracają jedną wartość i są używane tam, gdzie potrzebujemy pojedynczego wyniku, np. w klauzuli WHERE.
  • Podzapytania zagnieżdżone: Mogą zwracać wiele wartości i są używane np. w klauzuli IN.
  • Podzapytania w klauzuli FROM: Czasami podzapytania są używane jako "wirtualne tabele", które mogą być dalej przetwarzane w głównym zapytaniu.

Testy przypięte do lekcji
Aby uzyskać dostęp do testów i ćwiczeń interaktywnych - Zaloguj się
Aby widzieć ocenę lekcji - Zaloguj się