Podzapytania (zagnieżdżone zapytania) pozwalają wykonać zapytanie wewnątrz innego zapytania SQL. Możemy ich używać w klauzulach WHERE, FROM lub SELECT. Poniżej znajdziesz przykłady i ćwiczenia.
Instrukcja: Wyświetl wszystkich klientów, którzy złożyli zamówienie o wartości większej niż 500.
Tabele:
Rozwiązanie:
SELECT imie, nazwisko
FROM klienci
WHERE id_klienta IN (
SELECT id_klienta
FROM zamowienia
WHERE wartosc > 500
);
Instrukcja: Wyświetl imię i nazwisko każdego klienta oraz wartość jego największego zamówienia.
Rozwiązanie:
SELECT imie, nazwisko,
(SELECT MAX(wartosc)
FROM zamowienia
WHERE zamowienia.id_klienta = klienci.id_klienta) AS max_zamowienie
FROM klienci;
Instrukcja: Pokaż średnią wartość zamówienia dla każdego klienta.
Rozwiązanie:
SELECT id_klienta, AVG(wartosc) AS srednia_zamowienia
FROM (
SELECT id_klienta, wartosc
FROM zamowienia
) AS podzapytanie
GROUP BY id_klienta;
Instrukcja: Wyświetl imię i nazwisko klientów, którzy złożyli przynajmniej jedno zamówienie.
Rozwiązanie:
SELECT imie, nazwisko
FROM klienci k
WHERE EXISTS (
SELECT 1
FROM zamowienia z
WHERE z.id_klienta = k.id_klienta
);
Instrukcja: Mamy tabele uczniowie(id_ucznia, imie, nazwisko) i oceny(id_oceny, id_ucznia, przedmiot, ocena).
Wyświetl imię i nazwisko uczniów, którzy mają ocenę 6 z matematyki. Spróbuj napisać zapytanie samodzielnie, a potem sprawdź rozwiązanie poniżej.
Rozwiązanie:
SELECT imie, nazwisko
FROM uczniowie
WHERE id_ucznia IN (
SELECT id_ucznia
FROM oceny
WHERE przedmiot = 'Matematyka' AND ocena = 6
);