KWALIFIKACJA INF3 - CZERWIEC 2022

PYTANIE NR 20.
Z przedstawionych tabel Artykuly i Autorzy należy wybrać jedynie nazwiska autorów i tytuły ich artykułów, które zostały ocenione na 5. Kwerenda wybierająca te dane ma postać
Ilustracja przedstawia diagram bazy danych, który jest używany w kontekście egzaminu zawodowego dla technika programisty,
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawne zapytanie musi spełniać dwa warunki jednocześnie: połączyć tabele autorów i artykułów po relacji (JOIN ... ON) oraz odfiltrować tylko te rekordy, dla których ocena wynosi 5 (WHERE ocena = 5). Brak WHERE lub błędny warunek ON spowoduje zwrócenie złych danych.

Pełne wyjaśnienie:

Wynik ma zawierać wyłącznie nazwiska autorów i tytuły artykułów, ale tylko dla artykułów ocenionych na 5. To oznacza, że zapytanie powinno:

  • wybrać właściwe kolumny: nazwisko oraz tytul,
  • pobrać dane z dwóch tabel, więc zastosować złączenie (JOIN),
  • zastosować filtr wierszy po ocenie: WHERE ocena = 5.

Odpowiedź zawierająca warunek WHERE ocena = 5 jest poprawna, bo ogranicza wynik do interesujących rekordów. Dodatkowo użycie JOIN ... ON ... wskazuje, jak rekordy mają zostać skojarzone (np. klucz główny autora z kluczem obcym w tabeli artykułów). Bez poprawnego powiązania tabel można uzyskać przypadkowe pary autor–artykuł.

Odpowiedź bez klauzuli WHERE zwróci także artykuły z innymi ocenami, więc nie spełnia warunku zadania. Odpowiedź łącząca tabele po autorzy.id = artykuly.id jest typowym błędem: identyfikator w jednej tabeli nie musi odpowiadać identyfikatorowi w drugiej tabeli; relację zwykle realizuje klucz obcy (np. artykuly.autorzy_id), a nie porównanie dwóch różnych pól id. Z kolei zapis z przecinkiem w FROM i warunkiem ocena == 5 jest problematyczny: podwójny znak równości nie jest standardowym operatorem równości w SQL, a brak jawnego warunku złączenia grozi utworzeniem iloczynu kartezjańskiego i zwróceniem błędnych zestawień.

W praktyce warto pamiętać: JOIN odpowiada za połączenie danych, a WHERE odpowiada za filtrowanie. Na egzaminie zawsze sprawdź, czy w zapytaniu występują oba elementy, jeśli zadanie wymaga zarówno relacji między tabelami, jak i ograniczenia wyniku do konkretnego kryterium.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
WHERE filtruje wiersze zwracane przez zapytanie. Dzięki niej wynik zawiera tylko rekordy spełniające warunek, np. tylko artykuły o ocenie 5. Bez WHERE zapytanie zwróci również rekordy niespełniające kryterium, co w zadaniach egzaminacyjnych zwykle oznacza błąd logiczny.
JOIN łączy wiersze z dwóch tabel na podstawie warunku w ON. Typowo łączy się klucz główny autora z kluczem obcym w artykułach (np. identyfikator autora). To pozwala pobrać w jednym wyniku dane opisowe autora i dane o artykule bez ręcznego dopasowywania rekordów.
JOIN odpowiada tylko za skojarzenie wierszy z dwóch tabel, nie wybiera rekordów według oceny. Zadanie wymaga ograniczenia do artykułów ocenionych na 5, więc musi pojawić się filtr, najczęściej w postaci WHERE. Bez tego otrzymasz także artykuły o innych ocenach.
W standardowym SQL do porównania równości używa się znaku =. Zapis z podwójną równością (==) jest charakterystyczny dla wielu języków programowania, ale nie jest przenośny między bazami danych. Na egzaminie bezpiecznie stosuj operator =.
Poprawny warunek ON łączy pola, które tworzą relację, zwykle: klucz główny jednej tabeli z kluczem obcym drugiej tabeli. Jeżeli widzisz porównanie typu id=id bez kontekstu relacji, to może być błąd. Warto szukać nazwy pola wskazującej na powiązanie, np. *_id.
Zwróci tylko dwie kolumny: nazwisko oraz tytuł, bez pozostałych pól tabel. To częsty wymóg w zadaniach, gdzie trzeba ograniczyć wynik do danych prezentowanych użytkownikowi (np. lista artykułów z nazwiskami). Reszta danych może nadal istnieć w tabelach, ale nie pojawi się w wyniku.
JOIN jest czytelniejszy i zwykle zalecany, bo jawnie rozdziela warunek złączenia (ON) od filtrowania (WHERE). Składnia z przecinkiem w FROM bywa myląca i łatwo w niej zapomnieć o warunku łączenia, co prowadzi do iloczynu kartezjańskiego. Na egzaminie JOIN jest bezpieczniejszym wyborem.
Warunek oceny dotyczy filtrowania rekordów (które artykuły pokazać), więc naturalnie trafia do WHERE. ON opisuje relację łączenia tabel (jak dopasować autora do artykułu). W praktyce część baz pozwala mieszać warunki, ale na egzaminie rozdzielenie ról ON i WHERE ułatwia uniknięcie błędów.
Najczęstsze pomyłki to: brak WHERE mimo wymaganego filtra, błędne pola w ON (np. łączenie id z id bez relacji), brak warunku złączenia przy dwóch tabelach (co daje zbyt dużo wierszy) oraz używanie niepoprawnych operatorów (np. ==). Każdy z nich zmienia logikę wyniku.
Najprościej odszukać w zapytaniu warunek filtrujący, np. WHERE ocena = 5. Jeśli go nie ma, wynik nie będzie ograniczony. Dodatkowo upewnij się, że ocena dotyczy właściwej tabeli (tej z artykułami). W razie wątpliwości użyj aliasów tabel, aby wskazać kolumny jednoznacznie.
info

Statystycznie 53% uczniów zna prawidłową odpowiedź. trudne

Eksperci podkreślają: "Poprawne zapytanie musi spełniać dwa warunki jednocześnie: połączyć tabele autorów i artykułów po relacji (JOIN ..."

Źródła:

  • MySQL 8.0 Reference Manual: "SELECT Statement" (JOIN, WHERE) https://dev.mysql.com/doc/refman/8.0/en/select.html - accessed 2026-03-02
  • PostgreSQL Documentation: "SELECT" (FROM, JOIN, WHERE) https://www.postgresql.org/docs/current/sql-select.html - accessed 2026-03-02
  • SQLite Documentation: "SELECT" (FROM clause, JOIN, WHERE) https://www.sqlite.org/lang_select.html - accessed 2026-03-02

Materiały:

  • Dokumentacja wybranego DBMS: sekcje o SELECT, JOIN i WHERE
  • Kurs podstaw SQL obejmujący relacje 1..N i klucze obce
  • Zestawy zadań treningowych z kwerendami wielotabelowymi

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego