Przejdź do treści

Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

SQL: Podzapytania

wtorek,

SQL: Podzapytania

Podzapytania (subqueries) w SQL są narzędziem pozwalającym na wykonywanie złożonych operacji na danych. Podzapytanie to zapytanie zagnieżdżone wewnątrz innego zapytania, które może dostarczać dane do zewnętrznego zapytania. Są one szczególnie przydatne w sytuacjach, gdy operacja wymaga wielu kroków przetwarzania danych.

Podstawowe użycie podzapytań

Podzapytanie w klauzuli WHERE

Używane do filtrowania wyników zewnętrznego zapytania.

SELECT * FROM pracownicy
WHERE pensja > (SELECT AVG(pensja) FROM pracownicy);

Zapytanie zwraca pracowników, którzy zarabiają więcej niż średnia pensja.

Podzapytanie w klauzuli FROM

Podzapytanie może być użyte jako źródło danych w klauzuli FROM.

SELECT AVG(pensja)
FROM (SELECT * FROM pracownicy WHERE dzial = 'IT') AS PracownicyIT;

Zapytanie oblicza średnią pensję pracowników działu IT.

Podzapytanie w klauzuli SELECT

Podzapytania mogą być również użyte w klauzuli SELECT.

SELECT imie, (SELECT COUNT(*) FROM zamowienia WHERE zamowienia.IDPracownika = pracownicy.IDPracownika) AS LiczbaZamowien
FROM pracownicy;

Zapytanie zwraca listę pracowników wraz z liczbą zamówień, które obsłużyli.

Zaawansowane użycie podzapytań

Podzapytanie z IN

Podzapytanie z operatorem IN umożliwia filtrowanie na podstawie listy wartości zwróconych przez podzapytanie.

SELECT * FROM produkty
WHERE IDProduktu IN (SELECT IDProduktu FROM zamowienia WHERE dataZamowienia > '2021-01-01');

Zapytanie zwraca produkty, które zostały zamówione po 1 stycznia 2021 roku.

Podzapytania korelacyjne

W podzapytaniach korelacyjnych podzapytanie odnosi się do zmiennych z zewnętrznego zapytania.

SELECT * FROM pracownicy p
WHERE EXISTS (SELECT * FROM zamowienia z WHERE z.IDPracownika = p.IDPracownika);

Zapytanie zwraca pracowników, którzy mają przypisane zamówienia.

Podzapytanie z EXISTS

Używane do sprawdzenia, czy podzapytanie zwraca jakiekolwiek wiersze.

SELECT * FROM klienci
WHERE EXISTS (SELECT * FROM zamowienia WHERE zamowienia.IDKlienta = klienci.IDKlienta);

Zapytanie zwraca klientów, którzy złożyli przynajmniej jedno zamówienie.

Uwagi

  • Podzapytania mogą znacząco wpłynąć na wydajność, zwłaszcza w dużych bazach danych.
  • Zawsze zaleca się testowanie i optymalizację zapytań z podzapytaniami, aby uniknąć nadmiernego obciążenia systemu.
Artykuł: Olimpiada Zdrowia PCK

Olimpiada Zdrowia PCK

Artykuł: Zostań dawcą szpiku!

Zostań dawcą szpiku!

Artykuł: Przeglądarka Vivaldi

Przeglądarka Vivaldi

Artykuł: Lenovo

Lenovo

Artykuł: Światowy Dzień Oszczędzania

Światowy Dzień Oszczędzania

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły