Przejdź do treści

Listopadowa cena: matura z informatyki za 100 zł zamiast 120 zł za lekcję. Zgłoś się do 30.11. Umów bezpłatną konsultację →

Dział V

Bazy Danych: Strategie Maturalne, Kaskady i Podzapytania

Jak rozbić trudne zadanie na kwerendy pośrednie, kiedy użyć podzapytania, jak działa kolejność wykonywania zapytania i skąd biorą się dziwne wyniki.

Wstęp: jedno wielkie zapytanie to najgorszy pomysł

Ostatnie podpunkty zadania z bazy danych rzadko są trudne pojęciowo. Trudność polega na tym, że trzeba połączyć trzy rzeczy naraz: zgrupować, policzyć i wybrać rekord skrajny. Osoby, które próbują zapisać to w jednym zapytaniu, zwykle gubią się w nawiasach. Osoby, które dzielą pracę na kwerendy pośrednie, kończą szybciej i mają po drodze wynik do sprawdzenia. Ten dział to zestaw takich schematów plus kilka mechanizmów, które tłumaczą „dziwne” wyniki.

1 Kaskada kwerend pośrednich

Zapisana kwerenda jest dla programu takim samym źródłem danych jak tabela. Możesz więc zbudować z nich łańcuch: pierwsza przygotowuje dane, druga je podsumowuje, trzecia wybiera to, o co pyta polecenie. Każdy etap otwierasz i oglądasz — błąd wychodzi od razu, a nie na końcu.

Wzorzec trzech kroków
  • Krok 1 — przygotowanie. Złącz tabele, dołóż pola obliczeniowe, odfiltruj rekordy, które w ogóle nie wchodzą w grę (np. inny rok).
  • Krok 2 — podsumowanie. Zgrupuj i policz to, co trzeba: sumę, licznik, średnią.
  • Krok 3 — wybór. Posortuj wynik kroku drugiego albo nałóż warunek na policzoną wartość.
Nazewnictwo, które oszczędza nerwy

Nazywaj kwerendy tak, jak numeruje je arkusz: zadanie5_krok1, zadanie5_krok2, a finalną dokładnie tak, jak każe polecenie. Gdy pod koniec egzaminu wrócisz poprawić podpunkt, od razu wiesz, co jest czym. Kwerend pomocniczych nie usuwaj — nie przeszkadzają, a bywają dowodem toku rozumowania.

2 Podzapytania: gdy kaskada nie jest potrzebna

Podzapytanie to zapytanie w zapytaniu. Najczęściej służy do porównania z wartością, którą trzeba najpierw policzyć: średnią, maksimum, listą identyfikatorów. W wielu zadaniach zastępuje dwie kwerendy jednym czytelnym zapisem.

-- zamowienia powyzej sredniej wartosci
SELECT Numer, Wartosc
FROM Zamowienia
WHERE Wartosc > (SELECT AVG(Wartosc) FROM Zamowienia);

-- klienci, ktorzy kupili cokolwiek w 2026 roku
SELECT Nazwisko
FROM Klienci
WHERE ID IN (SELECT ID_klienta FROM Zamowienia WHERE YEAR(Data) = 2026);

-- rekord o maksymalnej wartosci, razem z remisami
SELECT Numer, Wartosc
FROM Zamowienia
WHERE Wartosc = (SELECT MAX(Wartosc) FROM Zamowienia);
Dwie zasady podzapytań
Porównanie z jedną wartością wymaga jednej wartości. Jeśli po znaku większości wstawisz podzapytanie zwracające wiele wierszy, dostaniesz błąd. Wtedy użyj IN zamiast znaku równości.
Access woli podzapytania w widoku SQL. W siatce projektowej też je wpiszesz, w wierszu Kryteria i w nawiasach, ale kod bywa czytelniejszy i łatwiej go skopiować do odpowiedzi.

3 Kolejność wykonywania zapytania

Zapytanie czyta się od góry, ale wykonuje w innej kolejności. Zrozumienie tej kolejności tłumaczy większość komunikatów o błędach i sytuacji, w których alias „nie działa”.

FROM      -- 1. skad bierzemy dane, ze zlaczeniami
WHERE     -- 2. odsiewamy pojedyncze rekordy
GROUP BY  -- 3. sklejamy rekordy w grupy
HAVING    -- 4. odsiewamy cale grupy
SELECT    -- 5. liczymy kolumny wyniku i nadajemy aliasy
ORDER BY  -- 6. sortujemy gotowy wynik
Alias nadany w SELECT nie zadziała w WHERE, bo w chwili filtrowania jeszcze nie istnieje. Zadziała natomiast w ORDER BY, które wykonuje się na końcu.
Warunek na wartości agregatu musi trafić do HAVING, bo WHERE pracuje przed zgrupowaniem, gdy sumy jeszcze nie ma.

4 Operacje na datach i okresach

Zadania lubią pytać o okresy: kwartał, dzień tygodnia, liczbę dni realizacji, rekordy z ostatniego miesiąca. Wszystko sprowadza się do wyciągnięcia części daty albo policzenia różnicy.

-- kwartal z daty (Access)
Kwartal: DatePart("q"; [Data])

-- dzien tygodnia, gdzie 2 to poniedzialek przy ustawieniu tygodnia od pn
Dzien: Weekday([Data]; 2)

-- ile dni trwala realizacja
Czas_realizacji: DateDiff("d"; [Data_zlozenia]; [Data_wydania])

-- grupowanie po kwartale w SQL
SELECT YEAR(Data) AS Rok, QUARTER(Data) AS Kwartal, SUM(Wartosc) AS Obrot
FROM Zamowienia
GROUP BY YEAR(Data), QUARTER(Data);
Zakres dat z godziną w tle

Jeśli kolumna przechowuje datę razem z godziną, warunek BETWEEN #2026-05-01# AND #2026-05-31# obetnie zamówienia z ostatniego dnia po północy, bo 31 maja o 14:20 jest większe niż 31 maja o 00:00. Bezpieczny zapis to warunek „od początku maja i mniejsze niż początek czerwca”.

5 Rekordy bez pary i duplikaty

Dwa polecenia wracają w arkuszach regularnie: znajdź rekordy, które nie mają odpowiednika w drugiej tabeli, oraz znajdź wartości powtarzające się. Oba mają gotowy wzorzec.

-- klienci bez zamowien
SELECT k.Nazwisko
FROM Klienci AS k
LEFT JOIN Zamowienia AS z ON k.ID = z.ID_klienta
WHERE z.Numer IS NULL;

-- powtarzajace sie adresy e-mail
SELECT Email, COUNT(*) AS Ile
FROM Klienci
GROUP BY Email
HAVING COUNT(*) > 1;
Kreatory, które to robią za Ciebie

Access ma w Kreatorze kwerend dwie gotowe pozycje: kwerendę wyszukującą duplikaty i kwerendę wyszukującą niepasujące rekordy. Na egzaminie to najszybsza droga, ale warto znać zapis SQL, bo w innym programie kreatora może nie być, a sam wzorzec zajmuje dwie linijki.

6 Kwerendy zmieniające dane

Do tej pory każda kwerenda tylko czytała dane. Czasem polecenie każe je zmienić: uzupełnić brakujące pole, podnieść ceny o procent, usunąć rekordy testowe albo zapisać wynik jako nową tabelę. To kwerendy funkcjonalne i mają jedną wspólną cechę — działają nieodwracalnie.

-- aktualizacja: podwyzka o 10 procent w jednej kategorii
UPDATE Produkty SET Cena = Cena * 1.1 WHERE Kategoria = 'AGD';

-- usuniecie rekordow testowych
DELETE FROM Zamowienia WHERE Numer LIKE 'TEST%';

-- zapisanie wyniku jako nowa tabela (Access)
SELECT * INTO Zamowienia_2026 FROM Zamowienia WHERE YEAR(Data) = 2026;
Zasada: najpierw obejrzyj, potem zmieniaj

Zanim uruchomisz aktualizację albo usuwanie, zbuduj zwykłą kwerendę wybierającą z tym samym warunkiem i sprawdź, ile rekordów obejmuje. Jeśli liczba się zgadza, dopiero wtedy zamień typ kwerendy. Na egzaminie nie ma cofania zmian w bazie, a plik źródłowy bywa jeden.

7 Diagnostyka dziwnych wyników

  • Wyników jest podejrzanie dużo — brakuje warunku złączenia, powstał iloczyn kartezjański. Sprawdź linie w oknie relacji i sekcję ON.
  • Wyników jest podejrzanie mało — złączenie wewnętrzne odcięło rekordy bez pary albo filtr daty ma zły format.
  • Program prosi o wpisanie parametru — w wyrażeniu jest literówka w nazwie pola. Nie wpisuj nic, popraw nazwę.
  • Suma jest zerowa — kolumna wczytana jako tekst. Wróć do typów pól.
  • Sortowanie działa odwrotnie niż chcesz — w siatce liczy się kolejność kolumn od lewej, w SQL kolejność pól po ORDER BY.
  • Średnia nie zgadza się z ręcznym rachunkiem — puste pola są pomijane przez agregaty.

8 Raport i formularz, gdy arkusz ich wymaga

Zadanie z bazy danych nie zawsze kończy się na kwerendach. Arkusze regularnie proszą o raport prezentujący wynik — z grupowaniem, podsumowaniem i nagłówkiem — a czasem o prosty formularz do wprowadzania danych. To osobne punkty, których nie da się nadrobić najlepszym nawet zapytaniem, a większość zdających ćwiczy wyłącznie kwerendy.

Raport w cztery kroki
  • Najpierw kwerenda, potem raport. Raport buduj na gotowej, sprawdzonej kwerendzie, nigdy wprost na tabeli — wtedy cała logika jest w jednym miejscu i łatwo ją poprawić.
  • Kreator raportów robi 90 procent roboty: wybierasz pola, poziom grupowania i sposób podsumowania. Ręczne układanie kontrolek zjada czas, którego na egzaminie nie ma.
  • Podsumowania wstawia się przyciskiem Opcje podsumowania w kreatorze albo polem obliczeniowym w stopce grupy, na przykład =Suma([Wartosc]).
  • Tytuł i nazwa. Raport zapisz pod nazwą z polecenia i sprawdź w Podglądzie wydruku, czy kolumny się mieszczą — ucięta kolumna to realna strata punktu.
Formularz

Jeśli polecenie mówi o wprowadzaniu danych, wystarczy formularz z kreatora oparty na jednej tabeli. Gdy arkusz prosi o obsługę relacji — na przykład klient i jego zamówienia na jednym ekranie — użyj formularza z podformularzem: kreator zaproponuje go sam, o ile relacja została wcześniej poprawnie ustawiona w oknie Relacje. To kolejny powód, żeby zacząć zadanie od relacji, a nie od kwerend.

9 Jak oddać wynik, żeby się liczył

Najczęstsza strata punktów w całym zadaniu nie ma nic wspólnego z SQL: rozwiązanie jest poprawne, ale nie trafia tam, gdzie kazał arkusz. Część praktyczna trwa 150 minut przy komputerze i zostawia zwykle kilka minut na uporządkowanie plików — warto je zaplanować.

  • Nazwy kwerend co do znaku. Jeśli arkusz podaje nazwę, sprawdź ją literka po literce na koniec pracy — zmiana nazwy zajmuje sekundę, a bez niej sprawdzający może nie znaleźć rozwiązania.
  • Treść zapytania w pliku z odpowiedziami. Gdy polecenie prosi o zapisanie zapytania, skopiuj je z Widoku SQL, a nie przepisuj z pamięci. Przy okazji wklej też otrzymany wynik, jeśli arkusz o niego prosi.
  • Plik tekstowy z odpowiedziami zapisuj na bieżąco, po każdym podpunkcie, a nie na końcu. Podpisz go numerem PESEL albo numerem zdającego, jeśli tak mówi instrukcja.
  • Baza zamknięta i zapisana. Access zapisuje dane na bieżąco, ale projekt kwerendy dopiero po zamknięciu jej okna — zamknij wszystkie karty przed końcem czasu.
  • Katalog z rozwiązaniami. Wszystko ląduje w folderze wskazanym w arkuszu. Plik na pulpicie nie istnieje dla sprawdzającego.
Jak to ćwiczyć

Weź najtrudniejszy podpunkt z dowolnego arkusza i rozwiąż go dwa razy: raz kaskadą trzech kwerend, raz jednym zapytaniem z podzapytaniem. Porównaj czas i liczbę poprawek. To ćwiczenie pokazuje, którą drogą naprawdę pracujesz szybciej pod presją.

Korepetycje z informatyki

Zdajesz maturę rozszerzoną z informatyki?

Prowadzimy indywidualne przygotowanie do matury z informatyki — algorytmy, Python i C++, bazy danych i arkusz kalkulacyjny. Zajęcia online, na arkuszach CKE. Zobacz program i cennik.

Zobacz korepetycje z informatyki

Uczysz się w technikum informatycznym? Prowadzimy też przygotowanie do kwalifikacji INF.02, INF.03 i INF.04. Zobacz egzaminy zawodowe →